【发布时间】:2023-04-06 03:39:02
【问题描述】:
class TestClass(object):
def __init__(self):
self.value = 100
self.x = lambda: self.value.__add__(100)
self.run()
def run(self):
self.x()
print self.value
t = TestClass()
#Output: 100
我希望能够定义一个 lambda 函数,例如 TestClass 中的那个,并让它改变一个实例变量。似乎 lambda 的构造方式意味着它不会修改原始值。我怀疑这与我或多或少理解的 Python 的参考策略有关。
所以接受我所做的缺陷,有没有类似的方法来获得类似的功能?我最终需要定义许多方法,例如x
,并打算将它们保存在字典中,因为它们将形成一个简单的指令集。据我所知,我需要使用 lambda
s 或 exec
来做我想做的事。
【问题讨论】:
-
您确定需要使用 lambdas 吗?没有理由不能在字典中存储对使用
def
语句定义的函数的引用。 -
@chepner 从这个意义上说,我不需要使用
lambda
,但如果我能这样做,源代码将更具可读性。好吧,它至少在我看来更具可读性。 -
如果方法很短,你总是可以在一行写
def x(self): return something
。如果您发布一些用于将方法存储在字典中的代码,我们可以确定 lambda 是否真的必要或有用。
标签:
python
lambda
pass-by-reference
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Lambda 可变性 - Python技术站