I. Einführung
1, baut eine neue Art der Vererbung im Gang Klasse ist, kann übergeordnete Klasse einer Basisklasse oder Superklasse aufgerufen wird, kann die neue Klasse mit dem Namen Unterklasse oder abgeleiteten Klasse wird, Unterklasse kann die Eigenschaften der Elternklasse erben.
2, die übergeordnete Klasse von Unterklassen geerbt werden kann, können Subklassen erben auch eine Vielzahl von übergeordneten Klassen.
3, in python3 erbt die höchsten Vorfahrklasse den Standard eingebauten Objektklasse.
4, in python2, die höchsten Vorfahrklasse nicht erbt Standard, diesmal, die Klasse und ihre abgeleiteten Klassen sind klassische Klassen. Sofern nicht ausdrücklich höchste Vorfahren Elternklasse der eingebaute Objekt ist, dass Klasse und ihre Nachkommen sind die neue Klasse zu Klasse.
Klasse Urgroßvater: X = 111 Klasse Großvater (Urgroßvater): Pass Klasse Vater (Großvater): Pass Klasse Sohn (Vater): Pass son_obj_1 = Son () Drucke (. Urgroßvater __bases__ ) # zu python3 Ergebnis (<Klasse 'Objekt'>, ) python2 Ergebnis () drucken (son_obj_1.x) drucken (Son.x) drucken (Father.x) drucken (Grandfather.x) # Die obigen Ergebnisse sind 111
Zweitens Mehrfachvererbung: eine Unterklasse erbt mehr als eine Elternklasse
1, die Vorteile: Unterklasse können die Eigenschaften der einzelnen Elternklasse verwenden, verbessern die Nutzung des Codes
2. Nachteile:
① vom Denken logisch, gehört dieses Kind in die Klasse selbst eine „Kategorie“ definiert verschwommen worden ist.
Ablesbarkeit und Skalierbarkeit ② Code schlechter kann es führen „Diamant Problem.“
3, wenn erfordert zwangsläufig die Verwendung von Mehrfachvererbung Weise sollte Mixins Methode.
Drittens resolve Vererbung Coderedundanz
Klasse der Mitarbeiter: Geschlecht = ' MALE ' # Unterklasse Gesamtdatenattribute DEF die __init__ (Self, Name, Alter): # eine Unterklasse Objektinstanz von gemeinsamen Attribute der self.name = Name self.age = Alter DEF SHOW_NAME (Selbst): # Es gibt eine Unterklasse Funktion Print ( ' dies ist ein Personal} { ' .format (self.name)) Klasse Worker (der Arbeitnehmer): DEF work_time (Selbst, Zeit): # Worker Unterklasse spezifische Merkmale Print ( " {} Stunden heute wie folgt: } { ' .format (die self.name, Zeit)) Klasse Manager (die Mitarbeiter): DEF die __init__ (Self, Name, Alter, Fähigkeiten): . die Mitarbeiter die __init__ (Self, Name, Alter) # wenn Unterklasse - Manager Objektinstanz, wenn die übergeordnete direkte references self.skill = Geschicklichkeit # Eltern ist es nicht, und dann definierbar DEF work_target (self, Ziel): # Manager - Unterklasse Besonderheiten Print ( ' {} Monat Indikatoren: {} ' .format (die self.name, Ziel)) worker_obj_1 = der Arbeiter ( ' Tom ' , ' 18 ' ) worker_obj_1.show_name () worker_obj_1.work_time ( ' 8H ') Manager_obj_1 = Manager ( ' Januar ' , ' 20 ' , ' Tanz ' ) manager_obj_1.show_name () manager_obj_1.work_target ( ' 10 Yi ' ) # Ergebnis '' ' Dies ist der Mitarbeiter tom tom heute an der Arbeit: 8h Dies ist Personal Januar Januar Indikatoren in diesem Monat: 1 Milliarde ‚‘ '
Viertens Immobilien Suchauftrag
1, der Fall der Einfachvererbung: weil es eine lineare Beziehung ist, einfach Seniorität folgen können kleine bis große finden.
2, Mehrfachvererbung Situationen: