Queria uma ajuda para entender o que está acontecendo no meu código.
class Cliente:
def __init__(self, nome):
self.__nome = nome
@property
def nome(self):
print("chamando @property nome()")
return self.__nome.title()
@nome.setter
def nome(self, nome):
print("chamando setter nome()")
self.__nome = nome
O que acontece no console quando tento trabalhar com este código é o seguinte.
from cliente import Cliente
cliente = Cliente('marcos')
cliente.nome
chamando @property nome()
'Marcos'
cliente.nome = 'vinicius'
cliente.nome
'vinicius'
Quando o método property é utilizado ele funciona corretamente, inclusive mostrando primeiro o print que existe dentro da função.
Porém quando é atribuído um novo nome ao objeto cliente o método setter parece não ser ativado, tanto que o print nem aparece no console. Pelo que percebi está sendo criado um novo atributo "nome", pois depois de ser atribuído o novo nome ao objeto, o método property (get) não retorna mais o print.
O que está errado?