@property | Python
@property| Python
Em Python, o decorador @property é usado para transformar um método em um atributo de leitura (getter) — permitindo acessar o valor retornado por um método sem usar parênteses.
Exemplo básico:
class Pessoa:
def __init__(self, nome):
self._nome = nome # convenção: "_" indica atributo "privado"
@property
def nome(self):
return self._nome
Agora:
p = Pessoa("Ana")
print(p.nome) # acessa como atributo, não como método
Saída:
Ana
Usando também setter e deleter
Você pode adicionar métodos que modificam ou apagam o atributo usando:
@<property>.setter@<property>.deleter
Exemplo:
class Pessoa:
def __init__(self, nome):
self._nome = nome
@property
def nome(self):
return self._nome
@nome.setter
def nome(self, novo_nome):
if not novo_nome:
raise ValueError("O nome não pode ser vazio.")
self._nome = novo_nome
@nome.deleter
def nome(self):
print("Apagando nome...")
del self._nome
Uso:
p = Pessoa("Ana")
print(p.nome) # Ana
p.nome = "Maria" # chama o setter
print(p.nome) # Maria
del p.nome # chama o deleter
Quando usar @property
Use @property quando:
- Você quer controlar o acesso a um atributo (ex.: validações, logs, cálculos dinâmicos).
- Deseja manter compatibilidade com código existente, permitindo mudar a implementação interna sem mudar a interface.