Getters e setters são métodos usados para acessar e modificar os atributos de uma classe. Eles ajudam a encapsular os dados e fornecem uma maneira controlada de interagir com os atributos, permitindo a validação e controle de acesso.
1.1. Getters
Um getter é um método que retorna o valor de um atributo.
Um setter é um método que define ou altera o valor de um atributo. Ele pode incluir lógica para validar os dados antes de atribuí-los.
Exemplo de Setter:
pythonCopiar códigoclass Pessoa:def__init__(self,nome,idade): self._nome = nome self.set_idade(idade)# Usando o setterdefget_nome(self):return self._nomedefget_idade(self):return self._idadedefset_idade(self,idade):if idade <0:raiseValueError("Idade não pode ser negativa.") self._idade = idade# Criando um objetopessoa =Pessoa("Bob", 25)print(pessoa.get_idade())# Saída: 25# Alterando a idadepessoa.set_idade(35)print(pessoa.get_idade())# Saída: 35# Tentando definir uma idade negativatry: pessoa.set_idade(-5)exceptValueErroras e:print(e)# Saída: Idade não pode ser negativa.
2. Propriedades em Python
Em Python, você pode usar o decorador @property para simplificar o uso de getters e setters, tornando a sintaxe mais limpa e legível.
Exemplo de Propriedades:
pythonCopiar códigoclass Pessoa:def__init__(self,nome,idade): self._nome = nome self._idade = idade@propertydefnome(self):return self._nome@propertydefidade(self):return self._idade@idade.setterdefidade(self,idade):if idade <0:raiseValueError("Idade não pode ser negativa.") self._idade = idade# Criando um objetopessoa =Pessoa("Carlos", 40)print(pessoa.nome)# Saída: Carlosprint(pessoa.idade)# Saída: 40# Alterando a idadepessoa.idade =45print(pessoa.idade)# Saída: 45# Tentando definir uma idade negativatry: pessoa.idade =-10exceptValueErroras e:print(e)# Saída: Idade não pode ser negativa.
3. Conclusão
A Programação Orientada a Objetos é uma abordagem poderosa que facilita a organização do código e a reutilização. O uso de getters e setters, além de propriedades, permite encapsular a lógica de acesso e modificação dos atributos de maneira controlada, contribuindo para a robustez do código.