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
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
to jest init() superklasy, jakich przykladow oczekujesz?
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
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