Aqui estão os elementos sintáticos e conceitos mais importantes da POO em Python para consulta rápida:
Definição de Classe:
class NomeDaClasse:
# Atributos de classe (opcional)
atributo_classe = "valor"
def __init__(self, parametro1, parametro2): # Construtor
self.parametro1 = parametro1 # Atributos de instância
self.parametro2 = parametro2
def metodo_de_instancia(self, arg): # Método de instância
print(f"Método de instância chamado por {self.parametro1}")
return self.parametro2 + arg
@classmethod
def metodo_de_classe(cls, arg): # Método de classe
print(f"Método de classe chamado. Atributo de classe: {cls.atributo_classe}")
return cls.atributo_classe + " " + arg
@staticmethod
def metodo_estatico(arg1, arg2): # Método estático
print("Método estático chamado.")
return arg1 + arg2
Criação de Objeto (Instância):
objeto = NomeDaClasse("valor1", "valor2")
Acesso a Atributos de Instância:
print(objeto.parametro1)
Chamada de Métodos de Instância:
resultado = objeto.metodo_de_instancia("extra")
Herança (Definição de Subclasse):
class SubClasse(NomeDaClasse): # SubClasse herda de NomeDaClasse
def __init__(self, p1, p2, p3):
super().__init__(p1, p2) # Chama o construtor da classe pai
self.parametro3 = p3
Métodos Mágicos (Dunder Methods) Essenciais:
__init__(self, ...)
: Inicializa o objeto.
class MinhaClasse:
def __init__(self, valor):
self.valor = valor
__str__(self)
: Representação de string "amigável" (para print()
).
def __str__(self):
return f"Objeto com valor: {self.valor}"
__repr__(self)
: Representação de string "oficial" (para debugging).
def __repr__(self):
return f"MinhaClasse(valor={self.valor})"
__eq__(self, other)
: Define o comportamento do ==
(igualdade de valor).
def __eq__(self, other):
if not isinstance(other, MinhaClasse): return NotImplemented
return self.valor == other.valor
@classmethod
: Decorador para métodos de classe (recebe cls
).
@classmethod
def criar_sem_valor(cls):
return cls(None)
@staticmethod
: Decorador para métodos estáticos (não recebe self
nem cls
).
@staticmethod
def mensagem_global():
print("Isso é uma mensagem estática.")