Oii, Ângelo!
Decorators em Python são uma forma de modificar o comportamento de funções ou métodos, sem alterar diretamente o código deles. O @property
é um tipo específico de decorator que transforma um método em um atributo de leitura.
class Pessoa:
def __init__(self, nome):
self._nome = nome
@property
def nome(self):
return self._nome
p = Pessoa('Ângelo')
print(p.nome)
Sem o @property
, você teria que chamar como método: p.nome()
.Com @property
, você acessa como se fosse um atributo: p.nome
.
Se você fizer:
print(p.nome)
Vai funcionar, sem parênteses, mesmo sendo uma função por trás.Isso melhora a leitura e mantém o controle da lógica, caso precise adicionar regras no futuro.
Aqui está o mesmo exemplo sem acentuação:
class Pessoa:
def __init__(self, nome):
self._nome = nome
@property
def nome(self):
return self._nome
p = Pessoa('Angelo')
print(p.nome)
Esse código cria uma classe Pessoa
com o nome armazenado de forma protegida, mas acessado de forma amigável usando @property
.
Resuminho:
@property
deixa o código mais limpo e seguro.- Você usa como atributo, mas por trás é um método.
- Decorators servem para adicionar funcionalidades extras, sem mudar o código original.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!