我最近試圖在Python中編寫和操作一個類,並且遇到了一個奇怪的情況。每當我嘗試操作一個類的實例化變量時,它只會影響它所在位置的變量。例如:在Python中,爲什麼類中某個變量的dictonary值發生變化,而不是變量本身?
class test:
def __init__(self):
self.test1 = 0
self.location = {"test1":self.test1}
self.row = [self.test1]
def change():
a = test() #instantiation
a.location['test1'] = 1 #Changing a.test1 to 1 within a dictionary
print(a.test1) #Print a.test
print(a.location['test1']) #Print a.test1 from within the dictionary where it was changed
print(a.row) #Print a list also containing a.test1
change()
輸出到:
0 #Variable itself is unchanged
1 #Variable in dictionary is changed
[0] #Same variable referenced in list is unchanged as well
爲什麼會出現這種情況,我怎麼可能改變a.test1通過僅在字典改變它等於1?
通過重新分配值,您不會重新分配實際屬性。 –
你似乎認爲在你的類中對'self.test1'的引用以某種方式創建了對實例變量的永久引用。他們不是。這些引用相當於只使用'0'。有了這種理解,行爲現在應該是明顯的。 –
「在Python中無法將變量鏈接到另一個變量」 - 學習Python – 0TTT0