Does Python have decorators in the standard library?

前端 未结 4 659
太阳男子
太阳男子 2021-02-18 17:38

Apart from @staticmethod and @classmethod? Most languages have some basic libraries making use of most of the language features.

It seems that

相关标签:
4条回答
  • 2021-02-18 17:47

    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.

    0 讨论(0)
  • 2021-02-18 17:50
    • property

    • functools.total_ordering

    • functools.lru_cache

    • functools.wraps

    • contextlib.contextmanager

      ...

    0 讨论(0)
  • 2021-02-18 17:54

    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.

    0 讨论(0)
  • 2021-02-18 18:03

    NOt a library per se but a compilation of useful decorators are on http://wiki.python.org/moin/PythonDecoratorLibrary

    0 讨论(0)
提交回复
热议问题