• POO (Programação Orientada a Objetos): Um paradigma de programação que organiza o código em torno de "objetos" que contêm dados e comportamentos.
  • Classe: Um modelo ou "planta" para criar objetos. Define os atributos e métodos que os objetos terão.
    • Convenção: CamelCase para nomes de classes.
  • Objeto (Instância): Uma ocorrência específica de uma classe. Cada objeto tem seus próprios valores para os atributos.
  • Atributo: Uma característica ou dado associado a um objeto (ex: nome, cor, idade).
    • Atributos de Classe: Comuns a todas as instâncias.
    • Atributos de Instância: Específicos para cada objeto.
  • Método: Uma função definida dentro de uma classe, representando um comportamento que os objetos podem realizar (ex: acelerar(), calcular_area()).
    • Sempre recebem self como primeiro parâmetro (referência à instância).
  • __init__(self, ...) (Construtor): Método especial chamado automaticamente ao criar um novo objeto. Usado para inicializar os atributos do objeto.
  • Pilares da POO:
    • Encapsulamento: Agrupar dados e métodos em classes, ocultando detalhes internos.
    • Herança: Uma classe (filha) herda atributos e métodos de outra (pai), promovendo reutilização.
    • Polimorfismo: Objetos de diferentes classes respondem ao mesmo método de formas diferentes.
    • Abstração: Focar no essencial e esconder a complexidade.
  • Métodos de Classe (@classmethod): Recebem a classe (cls) como primeiro argumento. Operam na classe em si.
  • Métodos Estáticos (@staticmethod): Não recebem self ou cls. São funções utilitárias dentro da classe.
  • Dunder Methods (Métodos Mágicos): Métodos especiais (__nome__) que o Python chama automaticamente em certas situações. Permitem personalizar o comportamento de operadores e funções built-in.
    • __str__(self): Representação "amigável" em string para print().
    • __repr__(self): Representação "oficial" em string (para debugging).
    • __eq__(self, other): Define como o operador == (igualdade) funciona.
    • __add__(self, other): Define como o operador + funciona.
    • Outros: __len__, __getitem__, __setitem__, __iter__, __next__, etc.