Pessoal, para que usar o property? Para mim ainda está confuso. Seria semelhante ao getter do java?
Pessoal, para que usar o property? Para mim ainda está confuso. Seria semelhante ao getter do java?
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.