7

Könnte jemand ein Problem mit diesem @ Property Decorator finden? Ich kann nicht scheinen, es richtig zu behaupten. Ich bin sicher, ich mache ein paar wirklich einfache Dinge falsch, aber kann jemand bitte meine müden Augen in die richtige Richtung zeigen?Python @property Decorator funktioniert nicht

class A: 
    def __init__(self): 
     self.a = 0 
     self._b = 0 

    @property 
    def b(self): 
     return self.b 

    @b.getter 
    def b(self): 
     if self._b is None: 
      return 0 
     return self._b 

    @b.setter 
    def b(self, val): 
     self._b = (val * 20) 


def test_getter_setter(): 
    obj = A() 
    obj.a = 1 
    #obj.b = 2 
    print obj.a, obj.b 
    obj.b = 2 
    print obj.a, obj.b 
    assert obj.b == 40 

test_getter_setter() 

Antwort

18

Der @property Dekorateur funktioniert nur auf neuen Stil Klassen. Vererben von object:

class A(object): 

Damit ändern Sie Ihre Testfunktion übergibt.

+1

grrrr ... danke! – opensourcegeek

+0

Alle meine Leiden sind einfach magisch verschwunden! Danke, Dr. Martijn! – reggie

Verwandte Themen