Свойство getter / setter не влияет на Python 2

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

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.aN @N.setter def N(self,v): print("B setter") self.aN = v def __init__(self): self.a = A() if __name__ == '__main__': b=B() bN = 2 print(bN, baN) bN = 3 print(bN, baN) 

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 

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

A и B должны быть classами нового стиля в Python 2.x.

property([fget[, fset[, fdel[, doc]]]])

Возвращает атрибут свойства для classов нового classа (classы, которые выводятся из объекта ).

Итак, если вы выйдете из object

 class A(object): ... class B(object): ... 

Ваш код будет работать должным образом.

  • Свойства Java Backslash
  • Как настроить log4j с файлом свойств
  • Имеются ли свойства для записи только в практических приложениях?
  • Чтение файла свойств в Java
  • Имущество (без дополнительной обработки) против публичного поля
  • Поднять событие всякий раз, когда значение свойства изменилось?
  • Должен ли я использовать общедоступные свойства и частные поля или публичные поля для данных?
  • Перечисление через свойства объекта (строка) в C #
  • Свойства системы Java и переменные среды
  • Получить список свойств объекта в Objective-C
  • Общаться между двумя windowsми в C #
  • Давайте будем гением компьютера.