我有我在做什麼用實例變量的一類,我想用一個類的方法在一個循環中進行修改,簡化版本:實例變量在不修改循環
class Example:
def __init__(self,x,z):
self.x=x
self.z=z
def run(self,y):
temp_list=[self.x, self.z]
for ind,item in enumerate(temp_list):
temp_list[ind] = temp_list[ind]+y
print (self.x, self.z)
ex = Example(5,6)
ex.run(5)
輸出I得到是[5,6]而不是期望的[10,11]。 我想知道是否有人可以指出我爲什麼發生這種情況的解釋?
從根本上說,你誤會*你正在修改*。您修改列表,而不是列表中的對象。值得一讀的是Ned Batchelder的[關於Python名稱和值的神話和神話](https://nedbatchelder.com/text/names.html) –
請注意,這與實例變量無關。如果您執行'x = 5;您會看到相同的行爲; y = 6; temp_list = [x,y]'然後做同樣的循環。 –
再次感謝您解釋這一點,並感謝您的鏈接,一定會檢查出來。 – Ale