🎯 Getters e Setters são Usados em Classes no Python

Em poucas palavras

Mecanismo que controla o acesso a um atributo interno, marcado por convenção com underscore inicial. O decorador @property transforma um método em getter, permitindo ler o valor como se fosse atributo comum, e @nome.setter define o método que valida e grava o novo valor.


📝 Notas e Desenvolvimento

Uso:

student = Student(“Harry”, “Gryffindor”)
print(student.house) # Output: Gryffindor

student.house = “Slytherin”
print(student.house) # Output: Slytherin

student.house = “Invalid House” # Isso lEvantaria um ValueError


**Explicação:**

-   `_house`: Usamos `_house` (com um underscore no início) para indicar que este atributo deve ser acessado através dos getters e setters. É uma convenção em Python.
-   `@property`: O decorador `@property` transforma o método `house(self)` em um getter. Agora podemos acessar o valor da casa usando `student.house` (como se fosse um atributo normal).
-   `@house.setter`: O decorador `@house.setter` transforma o método `house(self, house)` em um setter. Agora podemos definir o valor da casa usando `student.house = "Slytherin"`.
-   **Validação:** No setter, verificamos se a casa é válida antes de atribuir o valor. Se a casa for inválida, levantamos uma exceção `ValueError`.

**Vantagens de usar getters e setters:**

-   **Controle:** Você tem controle total sobre como os atributos são acessados e modificados.
-   **Flexibilidade:** Você pode adicionar lógica (como validação) aos getters e setters sem alterar o código que usa a classe.
-   **Manutenção:** Facilita a manutenção e a refatoração do código.

**Referência:**

-   [Página de Classes Python da W3schools](https://www.w3schools.com/python/python_classes.asp)

---

## 📚 Referências e Fontes

### 🔗 Conexões do Cofre

- 

### 🌐 Referências Externas

- 

### 💬 Citações Diretas

-