擅长:python、mysql、java
<p>你可以使用<a href="http://docs.python.org/2/library/operator.html#operator.methodcaller" rel="nofollow">^{<cd1>}</a></p>
<pre><code>from operator import methodcaller
call_one = methodcaller("one")
</code></pre>
<p>现在可以使用<code>get_one</code>从任何对象获取<code>one</code>,并像这样调用它</p>
<pre><code>call_one(obj)
</code></pre>
<p><strong>优于<code>getattr</code></strong></p>
<p>除了它的可读性和习惯用法之外,您不必为每个对象调用<code>methodcaller</code>,不像<code>getattr</code>。创建一次,并使用它,只要你想与尽可能多的对象。你知道吗</p>
<p>例如</p>
<pre><code>class MyClass1(object): # Python 2.x new style class
def one(self):
print "Welcome"
class MyClass2(object): # Python 2.x new style class
def one(self):
print "Don't come here"
from operator import methodcaller
call_one = methodcaller("one")
obj1, obj2 = MyClass1(), MyClass2()
call_one(obj1) # Welcome
call_one(obj2) # Don't come here
</code></pre>