1
resposta

Property = getter?

Pessoal, para que usar o property? Para mim ainda está confuso. Seria semelhante ao getter do java?

1 resposta

Oii, Fabio. Tudo bem?

No Python, a função property é usada para criar métodos que podem ser acessados como atributos. É muito útil para encapsular a lógica de acesso e modificação de atributos de instância, permitindo adicionar validações ou transformações sem alterar a interface pública da classe.

Um exemplo prático para ilustrar:

class Restaurante:
    def __init__(self, nome, categoria):
        self._nome = nome.title()
        self._categoria = categoria.upper()
        self._ativo = False

    @property
    def nome(self):
        return self._nome

    @nome.setter
    def nome(self, novo_nome):
        if isinstance(novo_nome, str):
            self._nome = novo_nome.title()
        else:
            raise ValueError("O nome deve ser uma string.")

    @property
    def categoria(self):
        return self._categoria

    @categoria.setter
    def categoria(self, nova_categoria):
        if isinstance(nova_categoria, str):
            self._categoria = nova_categoria.upper()
        else:
            raise ValueError("A categoria deve ser uma string.")

Usamos property para criar getters e setters para os atributos nome e categoria. Isso permite que possamos acessar e modificar esses atributos como se fossem públicos, mas com a lógica de validação e transformação encapsulada.

No Java, você faria algo semelhante usando métodos get e set. Enquanto em Java você precisa explicitamente chamar os métodos get e set, em Python, com property, você pode acessar e modificar os atributos diretamente, e o Python chamará os métodos apropriados por trás dos panos.

Espero ter ajudado.

Um abraço e bons estudos.