📊 Capítulo 05: Classes & @property
Especialização em Sistemas com Python
🗺️ Encapsulamento Pythonico: Atributos Públicos, Protegidos e Name Mangling
flowchart TD
ROOT["Convenções de Atributos em Classes Python"]
--> PUB["public_attr\n(Acesso livre e direto / Padrão da linguagem)"]
ROOT --> PROT["_protected_attr (Convenção PEP 8: 'Para uso interno, trate como privado!')"]
ROOT --> MANGLE["__private_attr (Name Mangling)\n(O CPython renomeia internamente para _NomeDaClasse__private_attr para evitar colisões em herança!)"]
style ROOT fill:#ede7f6,stroke:#512da8,stroke-width:2px
style PUB fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style PROT fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style MANGLE fill:#ffebee,stroke:#d32f2f,stroke-width:2px
🎯 Slide 1: O Decorator @property (Getters e Setters Pythonicos)
class ContaBancaria:
def __init__(self, titular: str, saldo_inicial: float = 0.0) -> None:
self.titular = titular
self._saldo = saldo_inicial
@property
def saldo(self) -> float:
return self._saldo
@saldo.setter
def saldo(self, valor: float) -> None:
if valor < 0:
raise ValueError("Saldo não pode ser negativo")
self._saldo = valor
- O chamador usa
conta.saldo = 100com sintaxe de atributo comum, mas dispara o método de validação por trás!
🎯 Slide 2: @classmethod vs @staticmethod
-
@classmethod: Recebeclscomo primeiro argumento. Ideal para construtores alternativos (Pessoa.from_json(dados)). @staticmethod: Função utilitária pura sem acesso aselfoucls.
🎯 Slide 3: Métodos Mágicos (Dunder Methods)
__repr__: Representação inequívoca para depuração.__str__: Representação amigável para o usuário final.__len__,__getitem__: Permite que seu objeto se comporte como uma coleção nativa!
🔗 Navegação do Capítulo 05
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim