Python object @property

stemmen
6

Ik ben op zoek naar een punt klasse die een eigenschap genaamd coördineren definieert creëren. Echter, het is niet gedraagt ​​zoals ik zou verwachten en ik kan niet achterhalen waarom.

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)

Het lijkt erop dat px en py krijgen niet ingesteld om wat voor reden, ook al is de setter moet ingesteld die waarden. Iedereen weet waarom dit is?

De vraag is gesteld op 26/08/2009 om 23:39
bron van user
In andere talen...                            


2 antwoorden

stemmen
9

De propertymethode (en bij uitbreiding, de @propertydecorateur) vraagt om een class-nieuwe-stijl ie een klasse die subklassen object.

Bijvoorbeeld,

class Point:

zou moeten zijn

class Point(object):

Ook de setterwas attributen (samen met de andere) in Python 2.6 toegevoegd.

antwoordde op 26/08/2009 om 23:47
bron van user

stemmen
4

Het zal werken als u Point ontlenen object:

class Point(object):
    # ...
antwoordde op 26/08/2009 om 23:47
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more