擅长:python、mysql、java
<p>decorator总是应用于函数对象——让decorator <code>print</code>作为其参数的类型,这样您就可以确认了;而且它通常也应该返回一个函数对象(它已经是一个具有正确的<code>__get__</code>的装饰器了!-)尽管后者也有例外。在</p>
<p>也就是说,在准则中:</p>
<pre><code>class X(object):
@deco
def f(self): pass
</code></pre>
<p>在类主体中调用<code>deco(f)</code>,并且,当您还在那里时,<code>f</code>是一个函数,而不是方法类型的实例。(当稍后的<code>f</code>作为<code>X</code>的属性或其实例被访问时,该方法在<code>f</code>的{<cd2>}中生成并返回)。在</p>
<p>也许你能更好地解释一下你想让你的装饰师使用的玩具,这样我们可以提供更多的帮助。。。?在</p>
<p><strong>编辑</strong>:这也适用于带参数的装饰器,即</p>
^{pr2}$
<p>那么在类主体中调用的<code>deco(23)(f)</code>,<code>f</code>仍然是一个函数对象,当作为参数传递给可调用的{<cd11>}返回的任何内容时,该可调用对象仍应返回一个函数对象(一般情况下,有例外;-)。在</p>