Skip to main content
 首页 » 编程设计

python之如何在作为高阶函数传递给方法的函数中使用 `self`

2025年05月04日12shihaiming

我正在尝试编写一个信号处理包,我想让用户创建一个自定义函数而不需要访问类文件:

class myclass(): 
    def __init__(self): 
        self.value = 6 
    def custom(self, func, **kwargs): 
        func(**kwargs) 
        return self 
 
c = myclass() 
def add(**kwargs): 
    self.value +=  kwargs['val'] 
 
kwargs = {'val': 4} 
c.custom(add, **kwargs ) 
print (c.value) 

我得到的名称“self”未定义。当然是因为 func 不是类的方法。但我不确定如何修复它。请指教。

谢谢

请您参考如下方法:

您需要将类实例传递到方法中, 这样做:

class myclass(): 
    def __init__(self): 
        self.value = 6 
    def custom(self, func, **kwargs): 
        func(self, **kwargs) ## added self here 
        return self 
 
c = myclass() 
def add(self, **kwargs):  ## added self here 
    self.value +=  kwargs['val'] 
 
kwargs = {'val': 4} 
c.custom(add, **kwargs ) 
print (c.value) 

输出: 10