擅长:python、mysql、java
<p><a href="http://docs.python.org/library/functions.html#property" rel="noreferrer">property</a>通常用作装饰器。</p>
<p><a href="http://docs.python.org/library/functools.html#module-functools" rel="noreferrer">functools</a>有几个通常用作装饰器的函数,例如<code>total_ordering</code>、<code>update_wrapped</code>、<code>lru_cache</code>和<code>wraps</code>。</p>
<p>contextlib具有<a href="http://docs.python.org/library/contextlib.html#contextlib.contextmanager" rel="noreferrer">^{<cd5>}</a>装饰器。</p>
<p>请记住,您可以将任何函数用作装饰器:</p>
<pre><code>@decorator
def function(): pass
</code></pre>
<p>就跟</p>
<pre><code>def function(): pass
function = decorator(function)
</code></pre>
<p>为了有用,它们通常需要将callable作为参数,并且需要返回一个callable对象。(<code>property</code>是第二部分的例外。)</p>
<p>类也可以用完全相同的方式进行修饰。</p>
<p>还有一个<a href="http://wiki.python.org/moin/PythonDecoratorLibrary" rel="noreferrer">list of decorators on the Python Wiki</a>。有些在标准库中,有些不在。</p>