我正在尝试创建一个定义名为“坐标”属性的点类。然而,这并不像我所期望的那样,我无法弄清楚为什么。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