Sobes.tech
Middle

Qual é a diferença entre classes e mixins?

sobes.tech IA

Resposta da IA

  • Classe - a unidade principal de POO, que descreve a estrutura e o comportamento dos objetos. Podem herdar umas das outras, formando uma hierarquia. As classes geralmente representam entidades reais ou abstratas.
  • Mixin - uma classe destinada a adicionar comportamento ou funcionalidade específica a outras classes através de herança múltipla. Os mixins não são destinados a criar instâncias independentes e muitas vezes não têm estado interno. O seu objetivo principal é fornecer funcionalidade "misturável".
Característica Classe Mixin
Propósito Descrever entidades e criar objetos Adicionar comportamento a outras classes
Criação de instâncias Geralmente possível Geralmente indesejável ou impossível
Estado Frequentemente tem (atributos de instância) Frequentemente não tem (apenas métodos)
Herança Pode herdar ou ser base Geralmente herdado por outras classes
Exemplo User, Product, DatabaseConnection SerializableMixin, DebugPrintMixin
# Exemplo de classe
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass # Método base

# Exemplo de mixin
class WalkableMixin:
    def walk(self):
        print(f"{self.name} está a caminhar.")

# Classe que usa o mixin
class Dog(Animal, WalkableMixin):
    def speak(self):
        print("Woof!")

# Criar uma instância da classe
my_dog = Dog("Buddy")
my_dog.speak() # Mostra "Woof!"
my_dog.walk()  # Mostra "Buddy está a caminhar."

# Normalmente não faz sentido criar uma instância de um mixin
# mx = WalkableMixin() # Não funcionará sem o atributo 'name'