cdw*_*son 6 python new-style-class
我正在尝试创建一个定义名为"坐标"的属性的点类.但是,它的表现并不像我期望的那样,我无法弄清楚原因.
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)
Run Code Online (Sandbox Code Playgroud)
似乎px和py由于某种原因没有设置,即使setter"应该"设置这些值.谁知道为什么会这样?
该property方法(通过扩展,该@property装饰)需要一个新式类,即一类的子类object.
例如,
class Point:
Run Code Online (Sandbox Code Playgroud)
应该
class Point(object):
Run Code Online (Sandbox Code Playgroud)
此外,setter在Python 2.6中添加了属性(以及其他属性).