🎬Getters e Setter

Doe, ajude a continuar criando conteúdo

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.

Exemplo de Getter:

pythonCopiar códigoclass Pessoa:
    def __init__(self, nome, idade):
        self._nome = nome  # Atributo protegido
        self._idade = idade

    def get_nome(self):
        return self._nome

    def get_idade(self):
        return self._idade

# Criando um objeto
pessoa = Pessoa("Alice", 30)
print(pessoa.get_nome())  # Saída: Alice
print(pessoa.get_idade())  # Saída: 30

1.2. Setters

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 setter

    def get_nome(self):
        return self._nome

    def get_idade(self):
        return self._idade

    def set_idade(self, idade):
        if idade < 0:
            raise ValueError("Idade não pode ser negativa.")
        self._idade = idade

# Criando um objeto
pessoa = Pessoa("Bob", 25)
print(pessoa.get_idade())  # Saída: 25

# Alterando a idade
pessoa.set_idade(35)
print(pessoa.get_idade())  # Saída: 35

# Tentando definir uma idade negativa
try:
    pessoa.set_idade(-5)
except ValueError as 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

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

    @property
    def idade(self):
        return self._idade

    @idade.setter
    def idade(self, idade):
        if idade < 0:
            raise ValueError("Idade não pode ser negativa.")
        self._idade = idade

# Criando um objeto
pessoa = Pessoa("Carlos", 40)
print(pessoa.nome)  # Saída: Carlos
print(pessoa.idade)  # Saída: 40

# Alterando a idade
pessoa.idade = 45
print(pessoa.idade)  # Saída: 45

# Tentando definir uma idade negativa
try:
    pessoa.idade = -10
except ValueError as 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.

Atualizado