[问题] 类别中使用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