擅长:python、mysql、java
<p>您描述的是一个decorator,一种方法/函数修改的形式,使用<a href="http://www.python.org/dev/peps/pep-0318/" rel="nofollow">decorators</a>的特殊语法可以更容易地完成。在</p>
<p>你所描述的相当于</p>
<pre><code>@transformMethod
def myMethod(self):
# do something
</code></pre>
<p>decorator的用法非常广泛,例如以<code>@staticmethod</code>、<code>@classmethod</code>、<code>@functools.wraps()</code>、<code>@contextlib.contextmanager</code>等形式,等等</p>
<p>由于特定的Python版本(我认为是2.6),类也可以被修饰。在</p>
<p>这两种decorator都允许返回甚至不是函数或类的对象。例如,您可以用一种方式来修饰生成器函数,将其转换为dict、set或其他任何东西。在</p>
^{pr2}$
<p>我在这里做什么?在</p>
<p>我创建了一个函数,它接受一个“要应用的东西”,然后返回另一个函数。在</p>
<p>这个“内部”函数接受要修饰的函数,调用它并将其结果放入外部函数并返回此结果。在</p>
<p><code>f()</code>返回生成器对象,然后将其放入<code>dict()</code>或{<cd7>}。在</p>