我想使用调用另一个函数的lambda表达式覆盖对象的方法:
class thing:
def __init__(self, id):
self.id=id
def function():
pass
def sum(x,y):
return x+y
a=thing('friend')
b=thing('buddy')
a.function = lambda: sum('hello ', a.id)
b.function = lambda: sum('hello ', b.id)
print a.function()
print b.function()
它工作得很好:
hello friend
hello buddy
问题是当我尝试使用for循环做同样的事情时,结果并不像我预期的那样:
a=thing('friend')
b=thing('buddy')
aList=[a,b]
for i in aList:
i.function = lambda: sum('hello ', i.id)
print a.function()
print b.function()
......它产生了这个:
hello buddy
hello buddy
有人可以帮助我吗?