Skip to main content

@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.