Jakie argumenty przyjmuje metoda następująca po super()?

0

Przykładowo w klasie pochodnej (Dziedziczącej) w metodzie "init" używam

super().__init__()

Jakie argumenty teraz może przyjąć "init" ?
Prosiłbym o jakiś przykład

0

to jest init() superklasy, jakich przykladow oczekujesz?

1

super().__init__()
Przyjmuje dokładnie takie argumenty jak rodzic. Na przykład:

class Prostokat():
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def pole(self):
        return self.a*self.b

class Kwadrat(Prostokat):
    def __init__(self, a):
        super().__init__(a, a)


def main(args):
    print(Kwadrat(2).pole())
    print(Prostokat(3, 2).pole())
    return 0

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

Przetestuj sobie jak to wygląda dla metody pole z klasy Kwadrat i Prostokat :P
(Nie musisz pisać metody pole w kwadracie, bo dzięki metodzie super będzie już dla kwadratu zdefiniowana. Pola self.a i self.b będą takie same dzięki metodzie super.)

Czyli w takim przykładzie jak powyżej, metoda super przy kwadracie do inicjalizacji potrzebuje dwóch argumentów

1

Tak używasz super().init() gdy nie ma żadnych argumentów

class Parent(object):
    def __init__(self):
        print('init w Parent')

class Child(Parent):
    def __init__(self):
        super().__init__()
        print('init w Child')

child = Child()

Tak kiedy jest jeden argument

class Parent(object):
    def __init__(self,wiek):
        print('init w Parent')
        self.wiek = wiek

class Child(Parent):
    def __init__(self,wiek):
        super().__init__(wiek)
        print('init w Child')

child = Child(5)
print('Moj wiek to {}'.format(child.wiek))


A tak kiedy masz 2

class Parent(object):
    def __init__(self,wiek,imie):
        print('init w Parent')
        self.wiek = wiek
        self.imie = imie

class Child(Parent):
    def __init__(self,wiek,imie):
        super().__init__(wiek,imie)
        print('init w Child')

child = Child(5,'Tomek')
print('Moj wiek to {} a moje imie to {}'.format(child.wiek, child.imie))

Innymi słowy wpisujesz dokładnie to co w rodzicu

1 użytkowników online, w tym zalogowanych: 0, gości: 1