gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:00 26 4
gpt4 key购买 nike

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

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

关于python - 如何在作为高阶函数传递给方法的函数中使用 `self`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com