我有一个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
您可以定义x和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
Run Code Online (Sandbox Code Playgroud)
这样,x并且y不是属性(因此数据只存储在其中一次datum),但保持可用(即:my_shape.x并按my_shape.y预期工作).