Oi Guilherme, tudo bem?
Na herança múltipla, a ordem das classes base na declaração da classe derivada importa. Quando você cria uma classe que herda de várias classes, como no caso da classe Pleno
que herda de Alura
, Caelum
, e Hipster
, a ordem em que essas classes são listadas determina a ordem em que os métodos serão buscados durante a execução.
Vamos analisar o trecho do código relevante:
class Pleno(Alura, Caelum, Hipster):
pass
Nesse exemplo, a ordem de herança é Alura
, Caelum
e Hipster
. Isso significa que, ao procurar por um atributo ou método em uma instância da classe Pleno
, o interpretador Python verificará primeiro a classe Alura
, depois Caelum
e, finalmente, Hipster
.
No seu código, a classe Hipster
define um método __str__
que utiliza o atributo self.nome
. No entanto, como Pleno
herda de Alura
, Caelum
, e Hipster
nessa ordem, o atributo self.nome
é procurado primeiro na classe Alura
, depois em Caelum
, e finalmente em Hipster
.
Se a classe Alura
tivesse um método __init__
que inicializasse self.nome
, esse valor seria usado quando você criasse uma instância de Pleno
e chamasse o método __str__
.
Se você tivesse outra classe com um atributo self.nome
, a ordem de herança determinaria de qual classe o atributo seria herdado. Se a nova classe viesse antes de Hipster
na lista de herança da classe Pleno
, então o self.nome
dessa nova classe seria utilizado. Se viesse depois, o self.nome
de Hipster
seria utilizado.
Não esqueça que a ordem de herança é crucial em casos de herança múltipla, e isso pode afetar o comportamento do código.
Espero que tenha te ajudado a entender.
Um abraço e bons estudos.