ExpertiDict

Python · Intermediário · Inglês · Técnico

super

/ˈsupəɹ/função

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 = 1

Exemplos

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.

Veja também

Todos os termos de Python