Здравствуйте. Есть несколько вопросов, связанные с декоратором @property:
- Почему метод, декорированный @property, вызывается автоматически, ведь я не совершал команду person.name='python'?
- Почему не создаётся отдельное свойство __name, а просто меняется на __name?
- И нужно ли называть объект-свойство так же, как и свойство, с которым работаем(Если назвать по-разному, то автоматически не происходит вызов объекта-свойства)
class Person:
def __init__(self, name):
self.name = name
@property
def name(self):
return self.__name
@name.setter
def name(self, val):
self.__name = val
person = Person('Python')
print(person.__dict__) # {'_Person__name': 'python'}