我需要将一个实例方法作为参数传递给函数:
class C(object):
def m(self):
print("m",self)
def f(l,b):
for z in l:
b(z)
x = C()
f([x], lambda c: c.m())
是否有比lambda
更好的方法?
似乎f([x], C.m)
也有效,但这是意外还是官方特征?
答案 0 :(得分:2)
你可以这样做:
f([x], C.m)
这里,C.m
是没有实例的方法。它与你的lambda做同样的事情。它绝对是官方和支持的功能。
答案 1 :(得分:1)
operator.methodcaller
>>> from operator import methodcaller
>>> f([x], methodcaller('m'))
m <__main__.C object at 0x1317bbda0>
methodcaller
返回一个callable,它将调用传递给它的给定实例上的方法。