我试图创建点类定义了一个名为“坐标”属性。但是,它不表现得就像我期望的,我想不通为什么。

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):
    # ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top