[問題] 類別中使用List的問題

作者: jijuan   2019-11-19 10:20:09
class Point:
x = 0
y = 0
pos = [0, 0]
def __init__(self, x, y):
self.x = x
self.y = y
self.pos[0] = x
self.pos[1] = y
def show_xy(self):
print(self.x, self.y, self.pos[0], self.pos[1])
p1 = Point(1, 2)
p2 = Point(3, 4)
p1.show_xy()
p2.show_xy()
輸出結果是
1 2 3 4
3 4 3 4
雖然p1、p2是兩個不同的實體
所以不是各自都有一份屬於自己的x、y和pos嗎
可是p1中的pos卻是建立p2時賦予的值
但xy卻又沒變
請問這是什麼原因
如果需求是希望每個一實體都有一份自己獨立的pos時
該如何做呢?
作者: lemon651 (小明)   2019-11-19 10:25:00
不要用成class variable 直接在init裡建variable就行了
作者: jijuan   2019-11-19 12:14:00
請問x,y一樣是class variables為什麼會不同?
作者: TuCH (謬客)   2019-11-19 16:56:00
有結構的東西不會複製一份 如果要複製 要.copy()原本的x指向0 後來self.x 就讓 x 指向1 但pos 是指向一個陣列 p1,p2都指向同一個陣列 因此會同步

Links booklink

Contact Us: admin [ a t ] ucptt.com