super()

Wołaj metodę rodzica z podklasy. Dopisz dodatkowe zachowanie po (albo wokół) tego wywołania.

Składnia

class Child(Parent):
def method(self, n):
super().method(n)
  • Jeśli nadpiszesz __init__, wołaj super().__init__(), inaczej setup rodzica nigdy nie zadziała.

Przykład

class Counter:
    def __init__(self):
        self.n = 0

    def add(self):
        self.n += 1

class Fast(Counter):
    def add(self):
        super().add()
        self.n += 1

c = Fast()
c.add()
print(c.n)

Wynik:

2

Typowe błędy

  • Zapomnienie self przy nadpisaniu to TypeError. Zapomnienie super() pomija metodę rodzica całkowicie.

Ćwicz to