我有一个类,它包含一个函数。我想按照相同的方式每隔一段时间更改这个函数。如果我使用lambda,就会出现无限递归。我知道出现这种情况的原因,我希望找到一种优雅的解决方案。
def func(s):
return 1 # some not interesting function
class cls: # a class
def __init__(self , f):
self.f = f
c = cls(func)
c.f = lambda x: c.f(x) + 1 # i want c.f to return c.f(x) + 1
print(c.f(1)) # causes infinite recursion
我不想去做
c.f = lambda x: func(x) + 1
因为我希望能够多次以相同的方式更改c.f
。
f=c.f
在 lambda 函数被 创建 时被评估,而不是在调用时,因此传递给函数的f
是c.f
(原始值)。 - mgilson