Получатели и установщики свойств не действуют в Python 2

Я немного запутался о свойствах в питоне. Рассмотрим следующий код

class A:
    @property
    def N(self):
        print("A getter")
        return self._N
    @N.setter
    def N(self,v):
        print("A setter")
        self._N = v

    def __init__(self):
        self._N = 1

class B:
    @property
    def N(self):
        print("B getter")
        return self.a.N
    @N.setter
    def N(self,v):
        print("B setter")
        self.a.N = v

    def __init__(self):
        self.a = A()

if __name__ == '__main__':
    b=B()
    b.N = 2
    print(b.N, b.a.N)
    b.N = 3
    print(b.N, b.a.N)

B должен быть чем-то вроде оболочки для A. Он использует геттеры и сеттеры для отображения свойств A на себя (конечно, это также можно сделать через наследование). Проблема в том, что он просто не работает должным образом в python2.6, в то время как в python3:

> python2 test.py
A getter
(2, 1)
A getter
(3, 1)

> python3 test.py
B setter
A setter
B getter
A getter
A getter
2 2
B setter
A setter
B getter
A getter
A getter
3 3

Я делаю что-то не так или в чем именно проблема?

10
задан ivan_pozdeev 14 June 2018 в 07:11
поделиться