题
我试图创建点类定义了一个名为“坐标”属性。但是,它不表现得就像我期望的,我想不通为什么。
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没有得到设置出于某种原因,即使二传手“应该”设置这些值。任何人都知道这是为什么?
解决方案
在property
方法(通过扩展,所述@property
装饰)需要一个新的风格类即子类object
的类。
例如,
class Point:
应
class Point(object):
另外,在Python 2.6中加入setter
属性(与其他一起)。
其他提示
如果您从对象派生一点上,将工作:
class Point(object):
# ...
不隶属于 StackOverflow