在以下示例中,我尝试通过types.MethodType(...)绑定方法对象。它似乎不起作用。有什么建议么?提前致谢。
import types
class Base:
def payload(self, *args):
print "Base:payload"
class Drvd(Base):
def iter(self, func):
derived_func = types.MethodType(func, self, Drvd) # bind
print "drvd_func:", derived_func
derived_func() # result: calls Base:payload
# expected:calls Drvd:payload; why???
def payload(self, *args):
print "Drvd:payload"
derived = Drvd()
base_func = Base.payload
print "base_func:", base_func
derived.iter(base_func) # pass unbound method object
输出显示:
base_func: <unbound method Base.payload>
drvd_func: < main .Drvd instance at 0x00B51648>>的绑定方法 Drvd.payload >>
Base:payload