Apart from @staticmethod
and @classmethod
? Most languages have some basic libraries making use of most of the language features.
It seems that
property is usually used as a decorator.
functools has several functions normally used as a decorator, such as total_ordering
, update_wrapped
, lru_cache
, and wraps
.
contextlib has the contextmanager decorator.
Keep in mind, you can use any function as a decorator:
@decorator
def function(): pass
is just the same as
def function(): pass
function = decorator(function)
In order to be useful, they generally need to be expecting a callable as an argument and they need to return a callable object. (property
is an exception to the second part of that.)
Classes can also be decorated, in exactly the same way.
There is also a list of decorators on the Python Wiki. Some of them are in the standard library, some are not.
property
functools.total_ordering
functools.lru_cache
functools.wraps
contextlib.contextmanager
...
Python decorators are just plain functions or other callables which take as single argument the function or class to be decorated. As such you can use many ordinary functions as decorators and vice versa. Possible use as decorator is often not explicitly documented.
NOt a library per se but a compilation of useful decorators are on http://wiki.python.org/moin/PythonDecoratorLibrary