1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)稍作修改的版本可以如您所愿地工作。
它本質(zhì)上是變量范圍問題。i在您的實(shí)現(xiàn)中,該函數(shù)在運(yùn)行時(shí)查找,何時(shí)i已更新為 9。如果要保留 的“當(dāng)前”值i,則需要定義一個(gè)具有當(dāng)前值的函數(shù),i如下所示。
class Object:
def __init__(self, command):
self.command = command
class Application:
def createObjects(self):
objects = []
for i in range(10):
obj = Object(command = self.myFunction(i))
objects.append(obj)
return objects
def myFunction(self, i):
return lambda: print(i)
a = Application()
os = a.createObjects()
for o in os:
o.command()
添加回答
舉報(bào)