我正在嘗試創建一個定義名爲「座標」屬性的點類。然而,這並不像我所期望的那樣,我無法弄清楚爲什麼。Python對象@property
class Point:
def __init__(self, coord=None):
self.x = coord[0]
self.y = coord[1]
@property
def coordinate(self):
return (self.x, self.y)
@coordinate.setter
def coordinate(self, value):
self.x = value[0]
self.y = value[1]
p = Point((0,0))
p.coordinate = (1,2)
>>> p.x
0
>>> p.y
0
>>> p.coordinate
(1, 2)
似乎p.x和p.y由於某種原因未被設置,即使setter「應該」設置這些值。有人知道這是爲什麼?
你使用Python 2.6+? – 2009-08-26 22:44:26
如果在嘗試更改對象之前嘗試在剛剛實例化對象之後嘗試打印「p.coordinate」,會發生什麼情況? – 2009-08-26 22:47:48
這是一個古老的風格類vs新風格的類,你可能會期望'property()'或IDE會捕獲它。 – smci 2012-08-21 22:47:10