实例方法作为功能对象

时间:2018-06-10 04:40:44

标签: python python-3.x function methods

我需要将一个实例方法作为参数传递给函数:

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)也有效,但这是意外还是官方特征?

2 个答案:

答案 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,它将调用传递给它的给定实例上的方法。