[PYTHON] Mach klar über super ()

Überblick

Ich habe super (), das Klassen in Python erbt, jedes Mal neu untersucht, wenn es herauskommt, also werde ich klären, wie man es benutzt.

Verwenden

Was ist "super ()"?

Wird zum Erben der übergeordneten Klasse verwendet

class Parent():
    def __init__(self, plus):
        self.min = 20
        self.plus = plus
    
    def plus(self):
        age = self.min + self.plus
        return age

class Child(Parent):
    def __init__(self):
        self.plus = 8

Selbst wenn Sie in diesem Zustand "(). Plus ()" ausführen, wird "init" der "Klasse Parent" überschrieben ("self.min" verschwindet), was zu einem Fehler führt.

Wenn Sie Folgendes tun, ist dies daher ein Grund, das __init __ der übergeordneten Klasse zu erben.

class Parent():
    def __init__(self, plus):
        self.min = 20
        self.plus = plus
    
    def plus(self):
        age = self.min + self.plus
        return age

class Child(Parent):
    def __init__(self):
        super().__init__(plus)
        self.plus = 8

Der Wert von "self.min" wird vererbt und kann den Wert von 28 ausgeben

Ist es __init__ nach super ()?

Nach "super ()" muss es nicht "init" sein, sondern nur eine Methode der übergeordneten Klasse.

class Parent():
    def message(self, text):
        print('your name is: {}'.format(text))

class Child(Parent):
    def message(self):
        print('your friend is: {}'.format(text))
        super().message(text)    

Grammatik

Über die Argumente in super ()

Unterschied zwischen Python2-Serie und 3-Serie

Das obige scheint Standard zu sein

Über die Argumente in __init__ ()

Beschrieben im Kommentar im vorherigen Beispiel

class Parent():
    def __init__(self, plus):
        self.min = 20
        self.plus = plus
    
    def plus(self):
        age = self.min + self.plus
        return age

class Child(Parent):
    #selbst und super()Drin()Beschreiben Sie die in verwendeten Argumente und fügen Sie Argumente hinzu
    def __init__(self, plus):
        # init()Selbst kann im Inneren weggelassen werden, Standardvariablen können auch weggelassen werden*, Richten Sie die Anzahl der Argumente am Init der übergeordneten Klasse aus
        super().__init__(plus)
        self.plus = 8

Das heißt, in Bezug auf die Kinderklasse

das ist alles

Recommended Posts

Mach klar über super ()
[Super Basics] Über jupyter Notebook
Über Linux-Befehle Super Basic Edition
Machen Sie GUI-Apps mit tkinter ganz einfach