2013-05-03 48 views
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更新更新。

對不起,如果這是令人困惑。非常感謝你幫助這個新手。

-Jason

回答

6

您可以定義xyproperties

@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),但保持可用狀態(即:my_shape.xmy_shape.y按預期工作)。

+2

最後一行應該是'@ y.setter'和'def y ...',對嗎? – Stefan 2013-05-03 07:45:40

+0

無法編輯它,必須至少有6個字符:( – paulm 2013-05-03 07:48:18

+0

對不起,複製粘貼是敵人...... :) – icecrime 2013-05-03 07:54:11

相關問題