[python] super (), Vererbung, __init__ usw.

Einführung

Dies ist nur ein Hinweis auf die Funktionsprüfung. Hier referenziert

Umgebung

python 3.6.9

Denken Sie in mehreren Klassen

--Fliegende Variable in der Vogelklasse

Fehlerbeispiel (1) Klassenvariablen werden nicht vererbt

class Bird:
    def __init__(self):
        self.fly = 'i can flying'
        print(self.__class__.__name__ + 'Klasse erstellen')
        
class Fish:
    def __init__(self):
        self.swim = 'i can swimming'
        print(self.__class__.__name__ + 'Klasse erstellen')
        
class Penguin(Class1, Class2):
    def __init__(self):
        print(self.__class__.__name__ + 'Klasse erstellen')       
        
        
penguin = Penguin()
penguin.fly


#Ausführungsergebnis
AttributeError: 'Penguin' object has no attribute 'fly'

Fehlerbeispiel (2) Nachfolgefehler

Fischklassenvariablen werden durch die Funktionen der Vogelklasse __init__ überschrieben


class Bird():
    def __init__(self):
        self.fly = 'i can flying'
        print(self.__class__.__name__)
        
class Fish():
    def __init__(self):
        self.swim = 'i can swimming'
        print(self.__class__.__name__)
        
class Penguin(Bird, Fish):
    def __init__(self):
        super().__init__()
        print(self.__class__.__name__)
        
        
penguin = Penguin()
penguin.fly
penguin.swim


#Ausführungsergebnis
AttributeError: 'Penguin' object has no attribute 'swim'

Erfolgsgeschichte

Es kann vererbt werden, ohne überschrieben zu werden, indem die Funktion __init __ 'explizit mit der Funktion super () in der Funktion __init __` jeder Klasse geerbt wird.

class Bird(object):
    def __init__(self):
        super(Bird, self).__init__()
        self.fly = 'i can flying'
        print('In der Vogelklasse')
        
class Fish(object):
    def __init__(self):
        super(Fish, self).__init__()
        self.swim = 'i can swimming'
        print('In der Fischklasse')
        
class Penguin(Bird, Fish):
    def __init__(self):
        super(Penguin,self).__init__()
        print('In der Fischklasse')
        
        
penguin = Penguin()
print(penguin.fly)
print(penguin.swim)

Denken Sie mit Pokemon

Grundlegende Konfiguration

Initialisieren Sie mit Standardargumenten

--Stellen Sie die Anfangswerte von Pichu, Pikachu, Raichu ein

class Pokemon():
    def __init__(self, life=0, power=0):
        self.life = life 
        self.power = power 
        print('In der Pokemon-Klasse')
        print(self.__class__.__name__ + 'Klasse')
        print('life: {} power: {}'.format( self.life, self.power))
        print('\n↓\n')
        
class Pichu(Pokemon):
    def __init__(self, life=50, power=100):
        super().__init__(life, power)
        print('In der Pichu-Klasse')
        print(self.__class__.__name__ + 'Klasse')
        print('life: {} power: {}'.format( self.life, self.power))
        print('\n↓\n')
    def kamituku(self):
        print('Beißen')
        
class Pikachu(Pichu):
    def __init__(self, life=150, power=200):
        super().__init__(life, power)
        print('In der Pikachu-Klasse')
        print(self.__class__.__name__ + 'Klasse')
        print('life: {} power: {}'.format( self.life, self.power))
        print('\n↓\n')
    def denkishokku(self):
        print('Elektrischer Schock')
        
class Raichu(Pikachu):
    def __init__(self, life=200, power=250):
        super().__init__(life, power)
        print('In der Raichu-Klasse')
        print(self.__class__.__name__ + 'Klasse')
        print('life: {} power: {}'.format( self.life, self.power))
        print('\n')
    def kaminari(self):
        print('Donner')
    def set(self, life, power):
        self.life = life
        self.power = power
        
print('---------------------------')
print('◯ Pokemon-Instanz ◯')
print('---------------------------')
pokemon = Pokemon()

print('---------------------------')
print('◯ Pichu-Instanz ◯')
print('---------------------------')
pichu = Pichu()

print('---------------------------')
print('◯ Pikachu-Instanz ◯')
print('---------------------------')
pikachu = Pikachu()

print('---------------------------')
print('◯ Raichu-Instanz ◯')
print('---------------------------')
raichu = Raichu()
raichu.kamituku()
raichu.denkishokku()
raichu.kaminari()

Ausführungsergebnis


---------------------------
◯ Pokemon-Instanz ◯
---------------------------
In der Pokemon-Klasse
Pokemon Klasse
life: 0 power: 0

↓

---------------------------
◯ Pichu-Instanz ◯
---------------------------
In der Pokemon-Klasse
Pichu-Klasse
life: 50 power: 100

↓

In der Pichu-Klasse
Pichu-Klasse
life: 50 power: 100

↓

---------------------------
◯ Pikachu-Instanz ◯
---------------------------
In der Pokemon-Klasse
Pikachu-Klasse
life: 150 power: 200

↓

In der Pichu-Klasse
Pikachu-Klasse
life: 150 power: 200

↓

In der Pikachu-Klasse
Pikachu-Klasse
life: 150 power: 200

↓

---------------------------
◯ Raichu-Instanz ◯
---------------------------
In der Pokemon-Klasse
Raichu Klasse
life: 200 power: 250

↓

In der Pichu-Klasse
Raichu Klasse
life: 200 power: 250

↓

In der Pikachu-Klasse
Raichu Klasse
life: 200 power: 250

↓

In der Raichu-Klasse
Raichu Klasse
life: 200 power: 250


Beißen
Elektrischer Schock
Donner

Denken Sie an Menschen

Grundlegende Konfiguration

--Human hat Yaruki-Mitgliedsvariablen

Teil ①

class Human:
    def __init__(self, yaruki):
         self.yaruki = yaruki
            
class Tarou(Human):
    def __init__(self,yaruki):
        super().__init__(yaruki)
    def set(self, yaruki):
        self.yaruki = yaruki
        
tarou = Tarou(100)
tarou.set(50) 
print(tarou.yaruki)

#Ausführungsergebnis
50

Teil 2

class Human:
    def __init__(self):
         self.yaruki
            
class Tarou(Human):
    def __init__(self):
        self.yaruki = 100
    def set(self, yaruki):
        self.yaruki = yaruki
        
        
tarou = Tarou()
tarou.set(50) 
tarou.yaruki

#Ausführungsergebnis
50

Recommended Posts

[python] super (), Vererbung, __init__ usw.
[Python] Klassenvererbung (super)
Python # Vererbung (Vererbung)
Informationen zur Python-Vererbung
Bequeme Methoden von Python usw.
[Python] Super nützliches Debugging
[Python] Klassenvererbung, überschreiben
Python Memorandum Super Basic
Python Super Anfänger versucht zu kratzen
Twitter-Beiträge in Python 3 usw.
Python #Funktion 2 für Super-Anfänger
Python #Funktion 1 für Super-Anfänger
Python #Liste für Super-Anfänger
Klassenvererbung und Superfunktion
[Hikari-Python] Kapitel 09-03 Klasse (Vererbung)
Beispiele wie Python Getter und Setter
Python #index für Super-Anfänger, Slices
Python #len Funktion für Super-Anfänger
[Python] Grund für das Überschreiben mit super ()
Python #Hello World für Super-Anfänger
Python für Super-Anfänger Super-Anfänger Python # Wörterbuch Typ 2