Fonction Python issubclass()

Python3 内置函数Fonctions intégrées de Python3


issubclass()C'est une fonction intégrée de Python utilisée pour vérifier si une classe est une sous-classe d'une autre classe.

issubclass()Elle est utilisée pour déterminer la relation d'héritage entre les classes, et peut vérifier les sous-classes directes et indirectes.

Définitions de mots: issubclass 是 is a subclass(是一个子类)的缩写。


Syntaxe de base et paramètres

Syntaxe

issubclass(class, classinfo)

Description du paramètre

  • Paramètre class:
    • Type: class
    • Description: La classe à vérifier.
  • Paramètre classinfo:
    • Type: class ou tuple de classes
    • Description: La classe parente ou un tuple de classes à comparer.

Description de la fonction

  • Valeur de retour: Renvoie une valeur booléenneTrueouFalse。
  • Fonctionnalité: Une classe est toujours considérée comme une sous-classe d'elle-même.

Exemples

Exemple 1 : Utilisation de base

Exemple

# Définition de classe
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Husky(Dog):
    pass

# Vérifier la relation d'héritage
print(issubclass(Dog, Animal))    # Sortie : True
print(issubclass(Cat, Animal))    # Sortie : True
print(issubclass(Dog, Cat))       # Sortie : False

# Héritage indirect
print(issubclass(Husky, Animal))   # Sortie : True (chaîne d'héritage : Husky -> Dog -> Animal)
print(issubclass(Husky, Dog))      # Sortie : True

Sortie attendue :

True
True
False
True
True

Analyse du code :

  1. La sous-classe est une sous-classe de la classe parente.
  2. L'héritage indirect (la classe petite-fille) est aussi une sous-classe de la classe ancêtre.

Exemple 2 : Utilisation d'un tuple de classes

Exemple

# Vérifier s'il appartient à plusieurs classes
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Robot:
    pass

print(issubclass(Dog, (Animal, Robot)))  # Sortie : True
print(issubclass(Dog, (Cat, Robot)))      # Sortie : False

# Une classe est aussi une sous-classe d'elle-même
print(issubclass(int, int))    # Sortie : True
print(issubclass(str, str))    # Sortie : True

# Classe de base abstraite
from collections.abc import MutableSequence
print(issubclass(list, MutableSequence))  # Sortie : True

Sortie réelle :

Affichez le résultat selon les conditions d'exécution réelles.

Analyse du code :

  • Vous pouvez vérifier s'il appartient à l'une quelconque de plusieurs classes.
  • Une classe est toujours une sous-classe d'elle-même.

Exemple 3 : Application pratique

Exemple

# Implémentation du polymorphisme
class Shape:
    def area(self):
        raise NotImplementedError

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

# Vérifier le type
shapes = [Circle(5), Rectangle(3, 4), Circle(2)]
for shape in shapes:
    if issubclass(type(shape), Shape):
        print(f"Aire : {shape.area()}")

# Utiliser isinstance (recommandé)
for shape in shapes:
    if isinstance(shape, Shape):
        print(f"Aire de la forme : {shape.area()}")

Sortie :

L'exécution dans l'environnement réel affichera l'aire de chaque forme.

Remarque : en programmation réelle, on utilise généralementisinstance()plutôt queissubclass(type())。


Python3 内置函数Fonctions intégrées de Python3


Autres extensions