Tenho algumas duvidas em relação a sintaxe de uma subclasse com multiplas heranças:
Posso adicionar quantas superclasse em uma subclasse?
A função super() mantem o mesmo formato ou é necessário conter um super() pra cada SuperClasse?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Tenho algumas duvidas em relação a sintaxe de uma subclasse com multiplas heranças:
Posso adicionar quantas superclasse em uma subclasse?
A função super() mantem o mesmo formato ou é necessário conter um super() pra cada SuperClasse?
Olá Vinicius, tudo bem com você?
Peço desculpas pela demora no retorno.
Quando temos uma classe com múltiplas heranças e as classes mães possuem o método inicializador, temos que adicionar o super no método inicializador das classes mães e no método inicializador da classe filha.
Considerando uma classe de nome FooBar que herda da classe Foo e da classe Bar, representadas a seguir.
class Foo:
def __init__(self):
print("Usando o método inicializador da Classe Foo")
super().__init__()
class Bar:
def __init__(self):
print("Usando o método inicializador da Classe Bar")
super().__init__()
class FooBar(Foo, Bar):
def __init__(self):
print("Usando o método inicializador da Classe FooBar")
super().__init__()
FooBar()
Resultado
Usando o método inicializador da Classe FooBar
Usando o método inicializador da Classe Foo
Usando o método inicializador da Classe Bar
Note que no código acima, o método inicializador da classe filha é instanciado, logo após a inicialização dos métodos das classes mães como apresentado nas mensagens impressas.
Sobre a quantidade limite de múltiplas heranças, a documentação do Python não apresenta um valor limite para heranças, mas devemos ter em mente que quanto maior a herança de classes mais complexo poderá ficar nosso código, assim podemos perder parte do controle sobre os métodos que são herdados pelas classes.
Deixo duas recomendações de leitura: o primeiro artigo, será apresentado sobre as boas práticas do uso de múltiplas heranças.
O segundo artigo irá apresentar com detalhes sobre o funcionamento da herança múltipla no Python e como é o funcionamento por baixo dos panos dos métodos inicializadores. O próximo artigo está em inglês, caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador;
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.