3

我有一个 Python Shape 类,它有一个名为 datum 的属性。它是一个包含两个数字 x 和 y 的列表。

如果我做

my_shape = Shape()

然后给定数据默认值:[0,0] 现在,我想通过执行以下操作重新分配数据:

my_shape.datum = [3,2] 

那么我的数据现在被分配了那个列表。

但我也有属性 x 和 y。如何使 x 和 y 自动更新为基准列表的第一项和第二项?

我把它放在初始化中

self.x = self.datum[0]
self.y = self.datum[1]

但这只会将 x 和 y 分配给初始化值,我无法弄清楚 self.datum 更新时如何更新。

如果这令人困惑,我很抱歉。非常感谢你帮助这个新手。

-杰森

4

1 回答 1

6

您可以将xand定义y属性

@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),但保持可用状态(即:my_shape.x并按my_shape.y预期工作)。

于 2013-05-03T07:41:46.593 回答