作者jijuan ()
看板Python
標題[問題] 類別中使用List的問題
時間Tue Nov 19 10:20:09 2019
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時
該如何做呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.38.81.156 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1574130011.A.12D.html
推 lemon651: 不要用成class variable 直接在init裡建variable就行了 11/19 10:25
→ jijuan: 請問x,y一樣是class variables為什麼會不同? 11/19 12:14
推 TuCH: 有結構的東西不會複製一份 如果要複製 要.copy() 11/19 16:56
→ TuCH: 原本的x指向0 後來self.x 就讓 x 指向1 但pos 是指向一個 11/19 16:58
→ TuCH: 陣列 p1,p2都指向同一個陣列 因此會同步 11/19 16:58