我想将一个类方法作为参数传递给一个函数,该函数将该方法应用于实例。我写了一个问题的简化的例子,它不起作用。在python中有办法做到这一点吗?
class A:
def __init__(self):
self.values = [1,2,3]
def combine(self) -> int:
return sum(self.values)
def return_zero(self) -> int:
return 0
def apply_func(instance, func):
return instance.func()
print(apply_func(A(), A.combine))
> AttributeError: 'A' object has no attribute 'func'
可以使用getattr():
def apply_func(instance, func):
fn = getattr(instance, func)
return fn()
print(apply_func(A(), 'combine'))
:
6
代替
def apply_func(instance, func):
return instance.func()
你应该这样做:
def apply_func(instance, func):
return func(instance)
记住方法被定义为def combine(self)
-通过调用func(instance)
,instance
简单地变成了self
。
上网试试!