1
resposta

Outra dúvida no super()

Em outra pergunta, o Janderson questionou porque precisamos usar o super() na função construtora, sendo que a classe mãe já foi passada como herança para as subclasses e, assim, temos acesso a todas as características da classe mãe.

A Nadia respondeu: "quando utilizamos a herança entre as classes, fazemos com que as classes filhas tenham direito a todos os atributos e métodos da classe mãe, porém, em alguns casos precisamos explicitar que queremos utilizar os atributos/métodos da classe mãe e isso é feito com o super(), como foi o caso do dunder init na classe Filme e Serie. Ambas queriam utilizar o método init da classe mãe e para deixar explícito isso para o Python utilizamos o super()"

A minha dúvida, então, é a seguinte: se as classes Filme e Serie não tivessem os atributo específicos "duração" e "temporadas", ou seja, se a função init fosse exatamente igual a da classe mãe, ainda seria necessário utilizar o super() e a construtora nas subclasses? Ou só a herança já seria suficiente para isso? Eu ainda estou achando confuso o fato de usar o init duas vezes (na classe mãe e na filha).

1 resposta

Olá Bárbara, tudo bem? Mesmo que as subclasses não tenham atributos específicos e o método init seja exatamente igual ao da classe mãe, ainda é necessário chamar o construtor da classe mãe usando o super() na função construtora da classe filha.

Isso ocorre porque a classe mãe pode ter outros atributos e métodos que não estão diretamente relacionados aos atributos das subclasses. E, caso a classe mãe tenha um método init que inicializa esses outros atributos, ao não chamar o super() na classe filha, esses atributos não seriam inicializados corretamente.

Por isso, é importante sempre chamar o construtor da classe mãe usando super() na função construtora da classe filha, mesmo que a classe filha não tenha atributos específicos e o método init seja exatamente igual ao da classe mãe.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software