1
resposta

[Dúvida] Decoradores em Python

Olá, estava fazendo o curso de POO em Python e chegou uma parte que ele ensinou o @property onde falou para que servia.. Mas não entendi se ele muda algo no código, se é para melhor leitura do código apenas, e oque são esses decorators de uma forma geral.

1 resposta

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údos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!