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

Using a class method as an argument to a function

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

Try it online!