擅长:python、mysql、java
<p>你需要做两件事:</p>
<ol>
<li><p>让<code>myDecorator</code>返回传递给它的类对象:</p>
<pre><code>def myDecorator(cls):
cls.dec_added_func = myFunction
return cls
</code></pre>
<p>否则,在默认情况下,decorator将返回<code>None</code>,并且当您尝试调用<code>MyClass()</code>时,您将得到一个<code>TypeError</code>。</p></li>
<li><p>使<code>myFunction</code>接受<code>self</code>参数:</p>
^{pr2}$
<p>无论何时在类的实例上调用它,它都将被隐式传递。</p></li>
</ol>
<p>下面是一个演示:</p>
<pre><code>>>> def myFunction(self):
... return 'X'
...
>>> def myDecorator(cls):
... cls.dec_added_func = myFunction
... return cls
...
>>> @myDecorator
... class MyClass(object):
... a = 'A'
...
>>> instance = MyClass()
>>> instance.dec_added_func()
'X'
>>>
</code></pre>