Python @property装饰器无法正常工作

ope*_*eek 8 python properties decorator getter-setter python-decorators

任何人都可以找到这个@property装饰器的问题吗?我似乎无法正确断言.我确定我做了一些非常简单的事情,但是有人能指出我疲惫的眼睛朝着正确的方向吗?

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()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 22

@property装饰仅适用于新的样式类.继承自object:

class A(object):
Run Code Online (Sandbox Code Playgroud)

通过该更改,您的测试功能通过.