[英]Can someone explain this python behavior to me?
有人可以解釋這種行為嗎? 當我運行代碼時,它將顯示10,然后是20。即使我僅更改了bob的值,為什么list_of_classes
被更改了? 我是否不必用新值更新列表?
class wooo():
def __init__(self,x,y,name):
self.x=x
self.y=y
self.name=name
bob=wooo(10,10,"bob")
joe=wooo(10,10,"joe")
list_of_classes=[bob,joe]
print(list_of_classes[0].x)
bob.x=20
print(list_of_classes[0].x)
10
20
10
10
您的列表包含對對象的引用 ,而不是副本。
list_of_classes[0]
是對bob
引用的同一對象的引用。 您可以為同一對象創建更多引用,並且所有這些引用都將顯示屬性更改:
>>> class wooo():
... def __init__(self,x,y,name):
... self.x=x
... self.y=y
... self.name=name
...
>>> bob=wooo(10,10,"bob")
>>> guido = bob
>>> guido.x
10
>>> guido.x = 20
>>> bob.x
20
>>> guido is bob
True
如果要將類的副本添加到列表中,請使用copy
模塊創建實例的深層副本:
>>> import copy
>>> robert = copy.deepcopy(bob)
>>> robert.x
20
>>> bob.x = 30
>>> robert.x
20
>>> robert is bob
False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.