1
resposta

[Dúvida] So para saber o porque?

Por que e necessário inicializar as mesmas variáveis na classe filha? Uma vez que a classe mãe já iniciou ? Invocando o método super() ele já não traria?

class Banco:
    def __init__(self,nome,endereco):
        self._nome = nome
        self._endereco = endereco
        
        
from banco import Banco
class Agencia:
    def __init__(self,nome,endereco,numero):
        super().__init__(nome,endereco)
        self._numero = numero
        
1 resposta

Olá Raphael! Tudo bem?

Essa é uma questão dúvida comum quando estamos aprendendo sobre herança em programação orientada a objetos.

Quando você utiliza a herança, a classe filha (neste caso, a Agencia) herda os atributos e métodos da classe mãe (Banco). No entanto, para garantir que os atributos da classe mãe sejam corretamente inicializados, é necessário chamar o construtor da classe mãe dentro do construtor da classe filha. Isso é feito com o método super().

No seu exemplo, ao chamar super().__init__(nome, endereco), você está garantindo que os atributos nome e endereco da classe Banco sejam inicializados corretamente.

Aqui está um exemplo prático para ilustrar melhor:

class Banco:
    def __init__(self, nome, endereco):
        self._nome = nome
        self._endereco = endereco

class Agencia(Banco):
    def __init__(self, nome, endereco, numero):
        super().__init__(nome, endereco)  # Inicializa nome e endereco da classe Banco
        self._numero = numero  # Inicializa o atributo adicional da classe Agencia

# Exemplo de uso
agencia = Agencia("Banco Exemplo", "Rua Exemplo, 123", 456)
print(agencia._nome)      # Saída: Banco Exemplo
print(agencia._endereco)  # Saída: Rua Exemplo, 123
print(agencia._numero)    # Saída: 456

No exemplo acima, super().__init__(nome, endereco) chama o construtor da classe Banco, garantindo que nome e endereco sejam inicializados. Em seguida, self._numero = numero inicializa o atributo específico da classe Agencia.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.