作者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://webptt.com/cn.aspx?n=bbs/Python/M.1574130011.A.12D.html
1F:推 lemon651: 不要用成class variable 直接在init里建variable就行了 11/19 10:25
2F:→ jijuan: 请问x,y一样是class variables为什麽会不同? 11/19 12:14
3F:推 TuCH: 有结构的东西不会复制一份 如果要复制 要.copy() 11/19 16:56
4F:→ TuCH: 原本的x指向0 後来self.x 就让 x 指向1 但pos 是指向一个 11/19 16:58
5F:→ TuCH: 阵列 p1,p2都指向同一个阵列 因此会同步 11/19 16:58