I. introduction
1, construire un nouveau type d'héritage est en cours à la classe, classe parent peut être appelé une classe de base ou super classe, la nouvelle classe peut être appelée sous-classe ou classe dérivée, la sous-classe peut hériter des propriétés de la classe parente.
2, la classe mère peut être héritée par les sous-classes, sous-classes peuvent hériter également une pluralité de classes parentes.
3, dans python3, la classe ancêtre le plus élevé hérite par défaut intégré classe d'objets.
4, en python2, la plus haute classe ancêtre ne fait pas défaut Hériter, cette fois-ci, la classe et ses classes descendantes sont des classes classiques. Sauf indication contraire explicite classe parent ancestral le plus élevé est intégré objet, cette classe et ses descendants sont la nouvelle classe à la classe.
classe bisaïeul: X = 111 classe Grand - père (bisaïeul): Passe classe Père (grand - père): Passe classe Fils (Père): Passe son_obj_1 = Fils () Imprimer (. bisaïeul __bases__ ) # pour résultat python3 (<class 'objet'>, ) résultat python2 () Imprimer (son_obj_1.x) Imprimer (Son.x) Imprimer (Father.x) Imprimer (Grandfather.x) # Les résultats ci - dessus sont 111
En second lieu, l'héritage multiple: une sous-classe hérite plus d'une classe parente
1, les avantages suivants: la sous-classe peuvent utiliser les propriétés de chaque classe parent, d'améliorer l'utilisation du code
2. Inconvénients:
① de penser logiquement, cet enfant appartient à la classe elle-même définit une « catégorie » est devenue floue.
Lisibilité et l'évolutivité du code ② pire, il peut conduire à « problème de diamant. »
3, si besoin inévitablement l'utilisation de façon héritage multiple, si la méthode Mixins.
Troisièmement, résoudre la redondance du code d'héritage
classe l'employé: Sexe = ' MALE ' # données total attributs DEF du __init__ (Self, nom, âge): # une instance d'objet de la sous - classe des attributs communs du self.name = Nom self.age = âge DEF SHOW_NAME (auto): # Il y a une fonction de sous - classe d' impression ( 'c'est un personnel} { ' .format (self.name)) classe des travailleurs (l'employé): DEF work_time (Self, Time): # travailleur fonctionnalités spécifiques de Print ( « {} heures aujourd'hui comme suit: } { ' .format (le self.name, temps)) classe Manager (l'employé): DEF le __init__ (Auto, nom, âge, adresse): . l'employé du __init__ (auto, nom, âge) # quand instance d'objet sous - classe Manager, si le parent a des références directes self.skill = compétences # parent n'est pas, et définissable DEF work_target (self, cible): # Gestionnaire dispose de spécifique impression ( ' {} indicateurs de mois: {} ' .format (la self.name, cible)) worker_obj_1 = travailleur ( ' Tom ' , ' 18 est ' ) worker_obj_1.show_name () worker_obj_1.work_time ( ' 8H ') Manager_obj_1 = Manager ( ' janvier ' , ' 20 ' , ' Danse ' ) manager_obj_1.show_name () manager_obj_1.work_target ( ' 10 Yi ' ) # résultat '' 'C'est le tom employé tom au travail aujourd'hui: 8 h Ce personnel est janvier indicateurs jan ce mois - ci: 1 milliard « » '
Quatrièmement, la recherche de biens pour
1, le cas de l'héritage unique: parce qu'il est une relation linéaire, il suffit de suivre l'ancienneté peut trouver petite à grande.
2, des situations d'héritage multiple: