更改另一个时分配属性

时间:2013-05-03 07:38:57

标签: python

我有一个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

1 个答案:

答案 0 :(得分:6)

您可以将xy定义为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

这样,xy不是属性(因此数据只在datum中存储一次),但保持可用(即:{{1} }和my_shape.x按预期工作。)