看板 Python 關於我們 聯絡資訊
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