Estoy tratando de crear una clase de punto que defina una propiedad llamada "coordinar". Sin embargo, no se comporta como esperaba y no puedo entender por qué.Objeto 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)
Parece que p.x y p.y no se establecen por alguna razón, a pesar de que el colocador "debe" fijar esos valores. ¿Alguien sabe por qué es esto?
¿Está utilizando Python 2.6+? –
¿Qué sucede si intenta imprimir 'p.coordinate' justo después de haber instanciado el objeto, antes de intentar cambiarlo? –
Esto es un gotcha old-style-classes-vs-new-style-classes y es de esperar que 'property()' o el IDE lo atrapen. – smci