除了@staticmethod和@classmethod?大多数语言都有一些使用大多数语言功能的基本库.
似乎我发现自己制作的许多装饰器都是很多人都会使用的东西,但我还没有找到任何内置的python装饰器来做它们.有这样的事吗?
agf*_*agf 21
属性通常用作装饰器.
functools有几个功能通常用作装饰,例如total_ordering,update_wrapped,lru_cache,和wraps.
contextlib有contextmanager装饰器.
请记住,您可以将任何函数用作装饰器:
@decorator
def function(): pass
Run Code Online (Sandbox Code Playgroud)
就像是一样的
def function(): pass
function = decorator(function)
Run Code Online (Sandbox Code Playgroud)
为了有用,它们通常需要期望可调用作为参数,并且它们需要返回可调用对象.(这property是第二部分的例外.)
课程也可以完全相同的方式进行装饰.
Python Wiki上还有一个装饰器列表.其中一些是在标准库中,有些则不是.