我在Python 2.7中有以下类:
class Parent():
def some_method(self):
do_something()
class Child(Parent):
def some_method(self):
do_something_different()
假设我有一堆对象要运行some_method
。我执行以下行(前两个是为了这个例子):
c = Child()
m = Parent.some_method
m(c) # do_something() gets called
是否有一些构造使得在最后一行do_something_different()
被调用而不使用任何关于Child
的信息(因为我可能有很多这样的类继承自Parent
)?< / p>
答案 0 :(得分:4)
使用operator.methodcaller
:
import operator
m = operator.methodcaller('some_method')
m(c)
这会查找对象的实际some_method
方法并调用它。它的成本更高,但是额外的时间都花在做你需要的东西上。