Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que a class Hipster entende o self.nome iniciado em class Funcionario?

class Funcionario:

def __init__(self, nome):
    self.nome = nome

class Hipster: def str(self): return f'Hipster, {self.nome}'

Não entendi no código do Funcionário Alura/Caelum porque na class Hipster, ele entende que o self.nome se refere ao self.nome inicializado na classe original Funcionario. E se tivesse outra classe também com self.nome?

1 resposta
solução!

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.