English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Python

Contrôle de flux Python

Fonction en Python

Types de données en Python

Opérations de fichiers Python

Objets et classes Python

Dates et heures Python

Connaissances avancées Python

Manuel de référence Python

Héritage en Python

L'héritage nous permet de définir une classe qui hérite de toutes les fonctionnalités de la classe parente et qui nous permet d'ajouter plus de fonctionnalités. Dans cet article, vous apprendrez à utiliser l'héritage en Python.

Qu'est-ce que l'héritage ?

L'héritage est une fonctionnalité puissante de la programmation orientée objet.

Cela signifie définir une nouvelleClasseEt qui ne modifie ou ne modifie guère les classes existantes. La nouvelle classe s'appelleClasse dérivée (ou enfant)Et la nouvelle classe qui en hérite s'appelleClasse de base (ou parent).

Syntaxe d'héritage en Python

class BaseClass:
  #Corps de la classe de base
class DerivedClass(BaseClass):
  #Corps de la classe dérivée

Les classes dérivées héritent des éléments de la classe de base et en ajoutent de nouveaux éléments. Cela améliore la réutilisabilité du code.

Exemple d'héritage en Python

Pour illustrer l'utilisation de l'héritage, permettons-nous d'illustrer un exemple.

Un polygone est un polygone qui a3Un polygone est une figure fermée composée d'un ou plusieurs côtés.

class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for i in range(no_of_sides)]
    def inputSides(self):
        self.sides = [float(input("Entrer les côtés "+str(i+1)+" : ")) for i in range(self.n)]
    def dispSides(self):
        for i in range(self.n):
            print("côtés",i+1,"est",self.sides[i])

Cette classe a des attributs de données pour stocker le nombre de côtés, les côtésnombreet la taille de chaque côté sous forme de liste, c'est-à-direnombre de côtés.

Un triangle est un polygone à

côtés. Par conséquent, nous pouvons créer une classe nommée Triangle qui hérite de Polygon. Cela permet à toutes les propriétés disponibles dans Polygon d'être utilisées dans Triangle sans avoir à les redéfinir (réutilisabilité du code). La définition de Triangle est la suivante.3un polygone à

class Triangle(Polygon):
    def __init__(self):
        Polygon.__init__(self,3)
    def findArea(self):
        a, b, c = self.sides
        # Calculer la demi-périphérie
        s = (a + b + c) / 2
        area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
        print('L'aire du triangle est %0.2f'%area)

Cependant, la classe Triangle possède une nouvelle méthode findArea() pour trouver et imprimer la zone du triangle. Voici un exemple de exécution.

>>> t = Triangle()
>>> t.inputSides()
Entrer les côtés 1 : 3
Entrer les côtés  2 : 5
Entrer les côtés  3 : 4
>>> t.dispSides()
côtés 1 est 3.0
côtés 2 est 5.0
côtés 3 est 4.0
>>> t.findArea()
L'aire d'un triangle est 6.00

Nous pouvons voir que, bien que nous n'ayons pas défini de méthode inputSides() ou sides() pour la classe Triangle, nous pouvons les utiliser.

Si l'attribut n'est pas trouvé dans la classe, la recherche continue jusqu'à la classe de base. Si la classe de base elle-même est dérivée d'une autre classe, cette opération est répétée de manière récursive.

Method overriding in Python

In the above example, please note that the __init__() method is defined in both the Triangle and Polygon classes. When this happens, the method in the derived class overrides the method in the base class. That is, Triangle.__init__() takes precedence over Polygon.__init__().

Generally, when overriding basic methods, we tend to extend the definition rather than simply replacing it. This is achieved by calling the base class method from the derived class (calling Polygon.__init__() from Triangle.__init__()).

A better choice is to use the built-in function super(). Therefore, super().__init__(3) is equivalent to Polygon.__init__(self,3) and is the preferred choice. You can learn more aboutIn Pythonsuper() function'sMore information.

The two built-in functions isinstance() and issubclass() are used to check inheritance. If the object is an instance of the class or any other derived class, the function isinstance() returns True. In Python, every class inherits from the base class object.

>>> isinstance(t, Triangle)
True
>>> isinstance(t, Polygon)
True
>>> isinstance(t, int)
False
>>> isinstance(t, object)
True

Similarly, issubclass() is used to check inheritance.

>>> issubclass(Polygon, Triangle)
False
>>> issubclass(Triangle, Polygon)
True
>>> issubclass(bool, int)
True