Quando o professor explica com exemplos e de forma ampla e clara getters e setters? Ele faz isto quando cita uma vez na aula o que é getters e setters? Não entendi, como na hora da prática isto está sendo pedido.
Quando o professor explica com exemplos e de forma ampla e clara getters e setters? Ele faz isto quando cita uma vez na aula o que é getters e setters? Não entendi, como na hora da prática isto está sendo pedido.
Olá, Guilherme.
Tudo bem?
Sobre getters e setters no contexto da aula de Python. Vou tentar esclarecer como esses conceitos são aplicados na prática, especialmente com o uso do @property
.
Em Python, getters e setters são métodos que permitem acessar e modificar atributos de uma classe de forma controlada. Eles são úteis para encapsular a lógica de acesso e modificação de atributos, garantindo que qualquer validação ou transformação necessária seja aplicada.
Vamos considerar um exemplo simples de uma classe Restaurante
:
class Restaurante:
def __init__(self, nome, categoria):
self.nome = nome
self.categoria = categoria
self._ativo = False # Atributo privado
@property
def ativo(self):
return '⌧' if self._ativo else '☐'
@ativo.setter
def ativo(self, valor):
if isinstance(valor, bool):
self._ativo = valor
else:
raise ValueError("O valor deve ser um booleano")
self._ativo
indica que o atributo é "privado" e não deve ser acessado diretamente fora da classe.ativo
decorado com @property
permite acessar o valor de _ativo
de uma forma controlada. No exemplo, ele retorna um emoji baseado no estado do atributo.ativo
decorado com @ativo.setter
permite modificar o valor de _ativo
, garantindo que apenas valores booleanos sejam atribuídos.Com a classe Restaurante
definida, você pode criar instâncias e acessar/modificar o atributo ativo
de forma segura:
restaurante = Restaurante("Pizza Express", "Italiana")
print(restaurante.ativo) # Saída: ☐
restaurante.ativo = True
print(restaurante.ativo) # Saída: ⌧
# Tentativa de atribuir um valor inválido
try:
restaurante.ativo = "sim"
except ValueError as e:
print(e) # Saída: O valor deve ser um booleano
Os getters e setters são uma forma de encapsular a lógica de acesso e modificação de atributos, proporcionando maior controle e segurança. No exemplo da aula, o @property
é usado para modificar a forma como um atributo é lido, enquanto o setter garante que apenas valores válidos sejam atribuídos.
Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.