Python · Intermediário · Inglês · Técnico
super
Função embutida que devolve um proxy para a próxima classe na ordem de resolução (MRO), permitindo chamar métodos herdados sem citar a classe-pai pelo nome.
Onde usar
Aparece no __init__ de subclasses e em herança múltipla cooperativa. Em code review, esquecer super().__init__() deixa os atributos da base sem inicializar.
Em código
class Base:
def __init__(self):
self.ok = True
class Filha(Base):
def __init__(self):
super().__init__() # sem passar self
self.extra = 1Exemplos
Don't forget to call super in the subclass init.
Não esqueça de chamar o super no init da subclasse.
With multiple inheritance, super follows the MRO.
Com herança múltipla, o super segue a MRO.
Cuidado
Não é a classe pai fixa: com herança múltipla, super() segue a MRO e pode chamar um irmão, não o pai direto.