更改另一个时分配属性

Jas*_*123 3 python

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

如果我做

my_shape = Shape()
Run Code Online (Sandbox Code Playgroud)

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

my_shape.datum = [3,2] 
Run Code Online (Sandbox Code Playgroud)

然后我的基准现在被分配了该列表.

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

我把它放在init中

self.x = self.datum[0]
self.y = self.datum[1]
Run Code Online (Sandbox Code Playgroud)

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

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

-Jason

ice*_*ime 6

您可以定义xy作为属性:

@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
Run Code Online (Sandbox Code Playgroud)

这样,x并且y不是属性(因此数据只存储在其中一次datum),但保持可用(即:my_shape.x并按my_shape.y预期工作).

  • 最后一行应该是`@ y.setter`和`def y ...`,对吗? (2认同)