Python issubclass()-Funktion

Python3 内置函数Python3 integrierte Funktionen


issubclass()Es ist eine integrierte Funktion in Python, mit der geprüft wird, ob eine Klasse eine Unterklasse einer anderen Klasse ist.

issubclass()Es wird verwendet, um die Vererbungsbeziehung zwischen Klassen zu bestimmen, und kann direkte und indirekte Unterklassen prüfen.

Wortdefinitionen: issubclass 是 is a subclass(是一个子类)的缩写。


Grundlegende Syntax und Parameter

Syntax

issubclass(class, classinfo)

Parameterbeschreibung

  • Parameter class:
    • Typ: class
    • Beschreibung: Die zu prüfende Klasse.
  • Parameter classinfo:
    • Typ: class oder Tupel von Klassen
    • Beschreibung: Die übergeordnete Klasse oder ein Tupel von Klassen, gegen die geprüft werden soll.

Funktionsbeschreibung

  • Rückgabewert: Gibt einen booleschen Wert zurückTrueoderFalse。
  • Merkmal: Eine Klasse wird immer als Unterklasse von sich selbst betrachtet.

Beispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

# Klassendefinition
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Husky(Dog):
    pass

# Vererbungsbeziehung prüfen
print(issubclass(Dog, Animal))    # Ausgabe: True
print(issubclass(Cat, Animal))    # Ausgabe: True
print(issubclass(Dog, Cat))       # Ausgabe: False

# Indirekte Vererbung
print(issubclass(Husky, Animal))   # Ausgabe: True (Vererbungskette: Husky -> Dog -> Animal)
print(issubclass(Husky, Dog))      # Ausgabe: True

Erwartete Ausgabe:

True
True
False
True
True

Codeanalyse:

  1. Die Unterklasse ist eine Unterklasse der Elternklasse.
  2. Indirekte Vererbung (die Enkelklasse) ist ebenfalls eine Unterklasse der Vorfahrenklasse.

Beispiel 2: Ein Tupel von Klassen verwenden

Beispiel

# Prüfen, ob es zu mehreren Klassen gehört
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Robot:
    pass

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

# Eine Klasse ist auch eine Unterklasse von sich selbst
print(issubclass(int, int))    # Ausgabe: True
print(issubclass(str, str))    # Ausgabe: True

# Abstrakte Basisklasse
from collections.abc import MutableSequence
print(issubclass(list, MutableSequence))  # Ausgabe: True

Tatsächliche Ausgabe:

Gib das Ergebnis entsprechend den tatsächlichen Laufzeitbedingungen aus.

Codeanalyse:

  • Du kannst prüfen, ob es zu einer von mehreren Klassen gehört.
  • Eine Klasse ist immer eine Unterklasse von sich selbst.

Beispiel 3: Praktische Anwendung

Beispiel

# Polymorphismus-Implementierung
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

# Typ prüfen
shapes = [Circle(5), Rectangle(3, 4), Circle(2)]
for shape in shapes:
    if issubclass(type(shape), Shape):
        print(f"Fläche: {shape.area()}")

# isinstance verwenden (empfohlen)
for shape in shapes:
    if isinstance(shape, Shape):
        print(f"Fläche der Form: {shape.area()}")

Ausgabe:

Bei Ausführung in der tatsächlichen Umgebung wird die Fläche jeder Form ausgegeben.

Hinweis: In der tatsächlichen Programmierung verwendet man normalerweiseisinstance()stattissubclass(type())。


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen