Menu
Coddy logo textTech

Herança Múltipla

Parte da seção Object Oriented Programming do Journey de Python da Coddy — lição 20 de 64.

A herança múltipla permite que uma classe herde de mais de uma classe pai, combinando funcionalidades de diferentes fontes.

Aqui estão duas classes pai:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def eat(self):
        return f"{self.name} is eating"

class Flyable:
    def fly(self):
        return f"{self.name} is flying"

Crie uma classe filha que herda de ambos os pais:

class Bird(Animal, Flyable):
    def __init__(self, name, species):
        super().__init__(name)  # Chama o __init__ de Animal
        self.species = species
    
    def sing(self):
        return f"{self.name} is singing"

A sintaxe class Bird(Animal, Flyable): significa que Bird herda tanto de Animal quanto de Flyable.

Crie um objeto pássaro e use métodos de ambos os pais:

sparrow = Bird("Sparrow", "House sparrow")

Chame métodos da primeira classe pai:

print(sparrow.eat())

Chame métodos da segunda classe pai:

print(sparrow.fly())

Chame o próprio método do pássaro:

print(sparrow.sing())

Saída:

Sparrow is eating
Sparrow is flying
Sparrow is singing

Você pode verificar a ordem de herança:

print(Bird.__mro__)  # Ordem de Resolução de Métodos

Isso mostra qual pai é verificado primeiro ao procurar por métodos.

Ponto Chave: A herança múltipla usa a sintaxe class Child(Parent1, Parent2):. A classe filha obtém todos os métodos de todas as classes pai. O Python verifica os pais da esquerda para a direita ao procurar por métodos.

challenge icon

Desafio

Médio

Neste desafio, você implementará um sistema de classes em múltiplos arquivos demonstrando herança múltipla com smartphones. Cada classe é organizada em seu próprio arquivo para uma melhor organização do código.

Você precisará editar estes arquivos:

  • device.py - Implemente a classe base Device
  • internet.py - Implemente a classe base Internet
  • smartphone.py - Implemente a classe Smartphone que herda de ambas as classes base
  • driver.py - Implemente casos de teste que verificarão se sua implementação funciona corretamente

Cada arquivo contém comentários TODO detalhados que o guiarão passo a passo pela implementação.

Folha de consulta

A herança múltipla permite que uma classe herde de mais de uma classe pai usando a sintaxe class Child(Parent1, Parent2):

class Animal:
    def __init__(self, name):
        self.name = name
    
    def eat(self):
        return f"{self.name} is eating"

class Flyable:
    def fly(self):
        return f"{self.name} is flying"

class Bird(Animal, Flyable):
    def __init__(self, name, species):
        super().__init__(name)  # Chama o __init__ de Animal
        self.species = species
    
    def sing(self):
        return f"{self.name} is singing"

A classe filha herda todos os métodos de todas as classes pai:

sparrow = Bird("Sparrow", "House sparrow")
print(sparrow.eat())   # Da classe Animal
print(sparrow.fly())   # Da classe Flyable
print(sparrow.sing())  # Método próprio da classe Bird

Verifique a Method Resolution Order (MRO) para ver qual pai é verificado primeiro:

print(Bird.__mro__)  # Mostra a ordem de herança

Experimente você mesmo

# TODO: Importe a classe Smartphone de smartphone.py

# Crie um smartphone e teste seus métodos
# TODO: Crie um objeto Smartphone com a marca "Apple" e o modelo "iPhone 13"
my_phone = None

# TODO: Chame e imprima o método power_on() do smartphone

# TODO: Chame e imprima o método connect() do smartphone

# TODO: Chame e imprima o método make_call() do smartphone com o parâmetro "123-456-7890"
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Object Oriented Programming