使用类方法作为函数的参数



我想将一个类方法作为参数传递给一个函数,该函数将该方法应用于实例。我写了一个问题的简化的例子,它不起作用。在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

上网试试!

最新更新