1
resposta

Não entendi o super inicializador

tendo em consideração o codigo:

class Playlist(list):
    def __init__(self, nome, programas):
        self.nome = nome
        super().__init__(programas)

e o for para vizualização:

for programa in playlist_fim_de_semana:
    print(programa)

eu ainda nao entendi do porque o for não passa pelo atributo 'nome' da classe nem em qual outra situação eu conseguiria reutilizar o super(). ou apenas do por que o super(). deve estar abaixo do self.nome, achei muito vago a explicação, não consegui vizualizar o caminho que o computador vai seguir ate chegar ao resultado

1 resposta

Pense no super como um comando que permite as classes-filha acessarem código da classe-mãe de forma direta. Então quando você chama super().init de uma classe subordinada a classe list, você está efetivamente chamando o construtor da classe list. Isso também pode se aplicar para quaisquer outros métodos ou atributos, se não estou enganado.

O uso do super seria como se você estivesse subindo um "degrau" na hierarquia de herança de classes.

Outras linguagens, como o Java, podem fazer uso disso para acessar getters e conseguir os atributos privados da classe-mãe, mas, como não existe um atributo realmente privado em python, seu uso pode ser mais limitado.