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

看板Python作者時間5年前 (2019/11/19 10:20), 編輯推噓2(203)
留言5則, 3人參與, 5年前最新討論串1/4 (看更多)
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

11/19 10:25, 5年前 , 1F
不要用成class variable 直接在init裡建variable就行了
11/19 10:25, 1F

11/19 12:14, 5年前 , 2F
請問x,y一樣是class variables為什麼會不同?
11/19 12:14, 2F

11/19 16:56, 5年前 , 3F
有結構的東西不會複製一份 如果要複製 要.copy()
11/19 16:56, 3F

11/19 16:58, 5年前 , 4F
原本的x指向0 後來self.x 就讓 x 指向1 但pos 是指向一個
11/19 16:58, 4F

11/19 16:58, 5年前 , 5F
陣列 p1,p2都指向同一個陣列 因此會同步
11/19 16:58, 5F
文章代碼(AID): #1Tqr5R4j (Python)
文章代碼(AID): #1Tqr5R4j (Python)