3
我從考試下面的代碼,我不明白爲什麼第一次當你做出f2 = f1
,做f1.set()
改變f2
但在那之後,當你設置f1 = Foo("Nine", "Ten")
不會改變f2
可言。如果有人知道爲什麼請向我解釋。非常感謝!蟒蛇 - 類可變性
代碼:
class Foo():
def __init__(self, x=1, y=2, z=3):
self.nums = [x, y, z]
def __str__(self):
return str(self.nums)
def set(self, x):
self.nums = x
f1 = Foo()
f2 = Foo("One", "Two")
f2 = f1
f1.set(["Four", "Five", "Six"])
print f1
print f2
f1 = Foo("Nine", "Ten")
print f1
print f2
f1.set(["Eleven", "Twelve"])
print f1
print f2
結果:
['Four', 'Five', 'Six']
['Four', 'Five', 'Six']
['Nine', 'Ten', 3]
['Four', 'Five', 'Six']
['Eleven', 'Twelve']
['Four', 'Five', 'Six']
你現在正在參加考試嗎? – Woot4Moo
這是我的這個老答案嗎? [Python列表不反映變量更改,新的python](http://stackoverflow.com/questions/12080552/12080644#12080644) –
嘗試運行此代碼通過可視化在[Python導師](http:// www .pythontutor.com)。 – Marius