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 singingVocê pode verificar a ordem de herança:
print(Bird.__mro__) # Ordem de Resolução de MétodosIsso 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.
Desafio
MédioNeste 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 baseDeviceinternet.py- Implemente a classe baseInternetsmartphone.py- Implemente a classeSmartphoneque herda de ambas as classes basedriver.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 BirdVerifique a Method Resolution Order (MRO) para ver qual pai é verificado primeiro:
print(Bird.__mro__) # Mostra a ordem de herançaExperimente 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"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
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosO Parâmetro selfMétodosAtributosMétodo Construtor (__init__)Recapitulação - Calculadora Simples4Herança
Herança BásicaA Função super()Sobrescrita de MétodoHerança MúltiplaOrdem de Resolução de MétodosRecapitulação - Hierarquia de Funcionários7Métodos Especiais
Introdução aos Métodos MágicosSobrecarga de OperadoresMétodos Mágicos de ContêinerRecapitulação - Lista Personalizada10Padrões de Projeto Parte 1
Introdução a Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão ObserverPadrão Strategy2Decoradores
Introdução aos DecoradoresDecorador de PropriedadeDecorador de Método EstáticoDecorador de Método de Classe5Polimorfismo
Sobrescrita de Método RevisitadaDuck TypingClasses e Métodos AbstratosDesign de InterfacesRecapitulação - Calculadora de Formas8Conceitos Avançados de POO
Composição vs HerançaMixinsMétodos Estáticos e de ClasseDecoradores de ClasseGerenciadores de Contexto11Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite3Propriedades de Classe
Variáveis de Instância vs de ClasseDecoradores de PropriedadeAtributos PrivadosRecapitulação - Gerenciador de Conta Bancária6Encapsulamento
Membros Públicos, Protegidos e PrivadosModificadores de AcessoOcultação de InformaçãoProperty Decorators AvançadosRecapitulação - Sistema de Registro de Alunos12Projeto: Gerenciamento de Biblioteca
Visão Geral do ProjetoClasses Livro e Usuário