Меня смущает поведение переменных атрибутов в моем классе при использовании декоратора свойств.
См. Этот пример:
class Example:
def __init__(self, x):
self.x = x
@property
def x(self):
return self.__x
@x.setter
def x(self, x):
self.__x = x
Это работает нормально, но как? Переменная внутри свойства установщика (self.__x
) не была «определена» в конструкторе, поэтому как ей можно присвоить значение?
Другие вещи также работают, например, возьмите тот же класс, что определен выше и добавьте к нему новую функцию-член:
def set_val_x(self):
self.__x = 8765
Опять же, использование этой функции действительно работает, аналогично property.setter (но не использует декоратор свойств).