[英]List of object references in python
b[0]
指向最初使用Foo(2)
創建的對象。 當你執行a = Foo(3)
,你創建一個新對象並將其命名為a
。 你沒有以任何方式改變b
。
行為是因為你所說的: b
擁有對象的引用。 它不會保留對您用於引用該對象的名稱的引用。 所以b[0]
中的對象對任何名為a
變量一無所知。 為a
分配新值對b
沒有影響。
在Python中,賦值運算符將右側表達式的結果綁定到左側表達式中的名稱。
所以,當你說的時候
a = Foo(2)
b = [a]
你已經創建了一個Foo
對象,並指這a
。 然后使用對Foo
對象的引用創建一個列表b
( a
)。 這就是b[0].value
打印2
。
但,
a = Foo(3)
創建一個新的Foo
對象並用名稱a
引用它。 所以,現在a
指的是新的Foo
對象而不是舊的對象。 但該列表仍然只引用舊對象。 這就是為什么它仍然打印2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.