我有一个Python Shape类,其中包含一个名为datum的属性。它是一个包含两个数字的列表,x和y。
如果我这样做
my_shape = Shape()
然后该数据被赋予默认值:[0,0] 现在,我想通过执行以下操作重新分配数据:
my_shape.datum = [3,2]
然后我的数据现在被分配了该列表。
但我也有属性x和y。如何使x和y自动更新以成为基准列表的第一项和第二项?
我把它放在 init
中self.x = self.datum[0]
self.y = self.datum[1]
但是这只会将x和y分配给初始值,而我无法弄清楚self.datum更新时如何更新。
如果这令人困惑,我很抱歉。非常感谢你帮助这个新手。
-Jason
答案 0 :(得分:6)
您可以将x
和y
定义为properties:
@property
def x(self):
return self.datum[0]
@x.setter
def x(self, value):
self.datum[0] = value
@property
def y(self):
return self.datum[1]
@y.setter
def y(self, value):
self.datum[1] = value
这样,x
和y
不是属性(因此数据只在datum
中存储一次),但保持可用(即:{{1} }和my_shape.x
按预期工作。)