- 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.