Maison > développement back-end > Tutoriel Python > Qu'est-ce que l'héritage en Python ?

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

WBOY
Libérer: 2023-06-04 08:41:16
original
3671 Les gens l'ont consulté

Python est un langage de programmation orienté objet et l'héritage est l'un des concepts importants. L'héritage signifie qu'une classe peut utiliser les propriétés et méthodes existantes dans une autre classe, ce qui peut réduire la duplication de code et faciliter la maintenance et les mises à jour du code. Apprenons-en davantage sur le concept et l'application de l'héritage en Python.

1. Concepts de base
L'héritage en Python est implémenté via des classes. Lors de la définition d'une sous-classe, vous pouvez spécifier la classe parent par « nom de sous-classe de classe (nom de classe parent) : » dans l'instruction de déclaration de classe. Cela permet aux sous-classes d'hériter des propriétés et des méthodes de la classe parent.

En Python, lors de la définition d'une sous-classe, vous pouvez hériter de plusieurs classes parents. Cette méthode d'héritage est appelée héritage multiple. La syntaxe de l'héritage multiple est la suivante :

class 子类名(父类1,父类2,…,父类n):
    ……
Copier après la connexion

Lors de l'utilisation de l'héritage, les sous-classes peuvent créer leurs propres propriétés et méthodes uniques, ou elles peuvent remplacer ou créer leurs propres implémentations. Ces modifications apportées aux méthodes portant le même nom dans la classe parent sont appelées remplacement de méthode.

2. Exemple d'application
Ci-dessous, nous utilisons un exemple d'application pour comprendre en profondeur le rôle de l'héritage en Python.

Supposons que nous voulions concevoir un jeu. Ce jeu comporte plusieurs personnages, chaque personnage ayant ses propres attributs et méthodes. Différents personnages ont les mêmes attributs et méthodes, tels que la puissance d'attaque, la puissance de défense, etc., et ont également leurs propres attributs et méthodes uniques, tels que les dégâts des sorts, les compétences de combat, etc. À l'heure actuelle, nous pouvons utiliser l'héritage pour éviter la duplication de code et faciliter la maintenance et l'expansion du code.

Tout d'abord, nous définissons une classe de personnage de base, qui contient les attributs et les méthodes que possèdent tous les personnages :

class Role:
    def __init__(self, name, level, hp, mp, attack, defense):
        self.name = name
        self.level = level
        self.hp = hp
        self.mp = mp
        self.attack = attack
        self.defense = defense

    def basic_attack(self, enemy):
        hurt = self.attack - enemy.defense
        if hurt > 0:
            enemy.hp -= hurt
            print(self.name, '攻击', enemy.name, '造成了', hurt, '点伤害')
        else:
            print(enemy.name, '防御很强,', self.name, '的攻击没有起到作用')
Copier après la connexion

Dans la classe de personnage de base, nous définissons les attributs et les méthodes du personnage, y compris le nom, le niveau, la santé, la valeur magique, puissance d'attaque, puissance de défense, etc. Dans le même temps, une méthode d'attaque de base basic_attack est définie, qui peut calculer les dégâts en fonction de la puissance d'attaque et de la puissance de défense, et donner au personnage ennemi l'effet de déduire des points de santé.

Ensuite, nous définissons deux sous-classes : le mage et le guerrier. Elles constituent toutes deux un type de rôle, mais ont leurs propres attributs et méthodes. Les mages ont des attributs de sorts et peuvent utiliser certaines compétences avec des attributs de sorts, tandis que les guerriers sont meilleurs en combat au corps à corps et ont des attaques normales plus puissantes :

class Mage(Role):
    def __init__(self, name, level, hp, mp, attack, defense, spell_power):
        super().__init__(name, level, hp, mp, attack, defense)
        self.spell_power = spell_power

    def fireball(self, enemy):
        hurt = self.spell_power - enemy.defense
        if hurt > 0:
            enemy.hp -= hurt
            print(self.name, '对', enemy.name, '发动了火球术,造成了', hurt, '点法术伤害')
        else:
            print(enemy.name, '防御很强,', self.name, '的火球术没有起到作用')


class Warrior(Role):
    def __init__(self, name, level, hp, mp, attack, defense, skill):
        super().__init__(name, level, hp, mp, attack, defense)
        self.skill = skill

    def slash(self, enemy):
        hurt = self.attack + self.skill - enemy.defense
        if hurt > 0:
            enemy.hp -= hurt
            print(self.name, '对', enemy.name, '发动了斩击,造成了', hurt, '点伤害')
        else:
            print(enemy.name, '防御很强,', self.name, '的斩击没有起到作用')
Copier après la connexion

Dans les deux sous-catégories de mages et de guerriers, on hérite de la classe de rôle de base Rôle Hériter les propriétés et les méthodes du rôle. Dans le même temps, nous avons également défini les attributs, sorts et compétences uniques des mages et des guerriers respectivement et réécrit les méthodes d'attaque de base pour donner aux mages et aux guerriers leurs propres méthodes d'attaque spéciales. De cette manière, la réutilisation des caractères est réalisée tout en conservant les caractéristiques des différents personnages.

3. Résumé
Grâce à l'explication de cet article, nous avons découvert les concepts de base et les exemples d'application de l'héritage en Python. En tant que fonctionnalité importante de la programmation orientée objet, l'héritage peut éviter la duplication de code, faciliter la maintenance et l'expansion du code. Dans le développement réel, nous pouvons utiliser l'héritage si nécessaire pour parvenir à une écriture de code efficace.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal