So überprüfen Sie, ob eine Klasse in Python eine Unterklasse einer anderen ist

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie lernen, wie Sie prüfen können, ob eine Klasse in Python eine Unterklasse einer anderen Klasse ist. Dies beinhaltet die Erkundung von Klassenvererbung, einem grundlegenden Konzept in der objektorientierten Programmierung.

Sie beginnen damit, eine Elternklasse Animal mit einem Konstruktor und einer speak-Methode zu erstellen. Dann erstellen Sie die Unterklassen Dog und Cat, die von Animal erben und die speak-Methode überschreiben. Schließlich lernen Sie, wie Sie die issubclass()-Funktion verwenden und das __bases__-Attribut untersuchen, um die Beziehungen zwischen Unterklassen zu bestimmen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/inheritance("Inheritance") subgraph Lab Skills python/build_in_functions -.-> lab-559501{{"So überprüfen Sie, ob eine Klasse in Python eine Unterklasse einer anderen ist"}} python/classes_objects -.-> lab-559501{{"So überprüfen Sie, ob eine Klasse in Python eine Unterklasse einer anderen ist"}} python/inheritance -.-> lab-559501{{"So überprüfen Sie, ob eine Klasse in Python eine Unterklasse einer anderen ist"}} end

Erkundung der Klassenvererbung

In diesem Schritt werden Sie sich mit der Klassenvererbung befassen, einem grundlegenden Konzept in der objektorientierten Programmierung (OOP). Die Vererbung ermöglicht es Ihnen, neue Klassen (Unterklassen) zu erstellen, die Attribute und Methoden von bestehenden Klassen (Elternklassen) erben. Dies fördert die Wiederverwendung von Code und hilft bei der Erstellung von organisiertem und wartbarem Code.

Beginnen wir damit, eine einfache Elternklasse namens Animal zu erstellen:

## Create a file named animal.py in the ~/project directory
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print("Generic animal sound")

Öffnen Sie Ihren VS Code-Editor und erstellen Sie eine neue Datei namens animal.py im Verzeichnis ~/project. Kopieren Sie den obigen Code und fügen Sie ihn in die Datei ein. Diese Klasse hat eine __init__-Methode (Konstruktor), die das name-Attribut initialisiert, und eine speak-Methode, die einen generischen Tierlaut ausgibt.

Nun erstellen wir eine Unterklasse namens Dog, die von der Animal-Klasse erbt:

## Add the following code to animal.py
class Dog(Animal):
    def speak(self):
        print("Woof!")

Fügen Sie den obigen Code zur Datei animal.py hinzu. Die Dog-Klasse erbt von Animal, indem Animal in Klammern hinter dem Klassennamen angegeben wird. Die Dog-Klasse überschreibt auch die speak-Methode, um ihre eigene spezifische Implementierung bereitzustellen.

Als Nächstes erstellen wir eine weitere Unterklasse namens Cat, die ebenfalls von der Animal-Klasse erbt:

## Add the following code to animal.py
class Cat(Animal):
    def speak(self):
        print("Meow!")

Fügen Sie den obigen Code zur Datei animal.py hinzu. Die Cat-Klasse erbt ebenfalls von Animal und überschreibt die speak-Methode.

Nun erstellen wir ein Hauptprogramm, um diese Klassen zu verwenden:

## Create a file named main.py in the ~/project directory
from animal import Animal, Dog, Cat

animal = Animal("Generic Animal")
dog = Dog("Buddy")
cat = Cat("Whiskers")

animal.speak()
dog.speak()
cat.speak()

Erstellen Sie eine neue Datei namens main.py im Verzeichnis ~/project und kopieren Sie den obigen Code in die Datei. Dieses Programm importiert die Klassen Animal, Dog und Cat aus der Datei animal.py. Dann erstellt es Instanzen jeder Klasse und ruft ihre speak-Methoden auf.

Um das Programm auszuführen, öffnen Sie Ihr Terminal in VS Code und navigieren Sie zum Verzeichnis ~/project:

cd ~/project

Führen Sie dann das Skript main.py mit dem Python-Befehl aus:

python main.py

Sie sollten die folgende Ausgabe sehen:

Generic animal sound
Woof!
Meow!

Dies zeigt, wie die Klassen Dog und Cat von der Animal-Klasse erben und ihre eigenen spezifischen Implementierungen der speak-Methode bereitstellen. Dies ist ein einfaches Beispiel für die Klassenvererbung in Python.

Verwendung der issubclass()-Funktion

In diesem Schritt lernen Sie, wie Sie die issubclass()-Funktion verwenden, um zu prüfen, ob eine Klasse eine Unterklasse einer anderen Klasse ist. Diese Funktion ist eine eingebaute Python-Funktion, die True zurückgibt, wenn das erste Argument eine Unterklasse des zweiten Arguments ist, und False sonst.

Setzen wir mit dem Beispiel aus dem vorherigen Schritt fort und verwenden die issubclass()-Funktion, um die Beziehungen zwischen den Klassen Animal, Dog und Cat zu prüfen.

Öffnen Sie Ihren VS Code-Editor und erstellen Sie eine neue Datei namens issubclass_example.py im Verzeichnis ~/project. Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein:

## Create a file named issubclass_example.py in the ~/project directory
from animal import Animal, Dog, Cat

print(issubclass(Dog, Animal))
print(issubclass(Cat, Animal))
print(issubclass(Dog, Cat))
print(issubclass(Animal, Dog))
print(issubclass(Animal, Animal))

Dieses Programm importiert die Klassen Animal, Dog und Cat aus der Datei animal.py, die Sie im vorherigen Schritt erstellt haben. Anschließend verwendet es die issubclass()-Funktion, um die folgenden Beziehungen zu prüfen:

  • Ist Dog eine Unterklasse von Animal?
  • Ist Cat eine Unterklasse von Animal?
  • Ist Dog eine Unterklasse von Cat?
  • Ist Animal eine Unterklasse von Dog?
  • Ist Animal eine Unterklasse von sich selbst?

Um das Programm auszuführen, öffnen Sie Ihr Terminal in VS Code und navigieren Sie zum Verzeichnis ~/project:

cd ~/project

Führen Sie dann das Skript issubclass_example.py mit dem Python-Befehl aus:

python issubclass_example.py

Sie sollten die folgende Ausgabe sehen:

True
True
False
False
True

Diese Ausgabe zeigt, dass:

  • Dog eine Unterklasse von Animal ist (True)
  • Cat eine Unterklasse von Animal ist (True)
  • Dog keine Unterklasse von Cat ist (False)
  • Animal keine Unterklasse von Dog ist (False)
  • Animal eine Unterklasse von sich selbst ist (True)

Die issubclass()-Funktion ist nützlich, um die Vererbungsbeziehungen zwischen Klassen in Ihrem Code zu prüfen. Dies kann helfen, sicherzustellen, dass Ihr Code wie erwartet funktioniert, und um robusteren und wartbareren Code zu schreiben.

Untersuchung des __bases__-Attributs

In diesem Schritt lernen Sie, wie Sie das __bases__-Attribut einer Klasse untersuchen können, um ihre direkten Elternklassen zu finden. Das __bases__-Attribut ist ein Tupel, das die Elternklassen einer Klasse enthält.

Setzen wir mit dem Beispiel aus den vorherigen Schritten fort und untersuchen das __bases__-Attribut der Klassen Animal, Dog und Cat.

Öffnen Sie Ihren VS Code-Editor und erstellen Sie eine neue Datei namens bases_example.py im Verzeichnis ~/project. Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein:

## Create a file named bases_example.py in the ~/project directory
from animal import Animal, Dog, Cat

print(Dog.__bases__)
print(Cat.__bases__)
print(Animal.__bases__)

Dieses Programm importiert die Klassen Animal, Dog und Cat aus der Datei animal.py, die Sie in den vorherigen Schritten erstellt haben. Anschließend gibt es das __bases__-Attribut jeder Klasse aus.

Um das Programm auszuführen, öffnen Sie Ihr Terminal in VS Code und navigieren Sie zum Verzeichnis ~/project:

cd ~/project

Führen Sie dann das Skript bases_example.py mit dem Python-Befehl aus:

python bases_example.py

Sie sollten die folgende Ausgabe sehen:

(<class 'animal.Animal'>,)
(<class 'animal.Animal'>,)
(<class 'object'>,)

Diese Ausgabe zeigt, dass:

  • Die Dog-Klasse von der Animal-Klasse erbt.
  • Die Cat-Klasse von der Animal-Klasse erbt.
  • Die Animal-Klasse von der object-Klasse erbt, die die Basisklasse für alle Klassen in Python ist.

Das __bases__-Attribut ist nützlich, um die Vererbungshierarchie Ihrer Klassen zu verstehen. Dies kann beim Debugging und beim Schreiben von wartbarerem Code helfen.

Zusammenfassung

In diesem Lab haben Sie die Klassenvererbung in Python untersucht, ein Schlüsselkonzept in der objektorientierten Programmierung. Sie haben eine Elternklasse Animal mit einem Konstruktor und einer speak-Methode erstellt und dann die Kindklassen Dog und Cat definiert, die von Animal erben.

Diese Kindklassen haben die speak-Methode überschrieben, um ihre eigenen spezifischen Implementierungen bereitzustellen. Dies zeigt, wie die Vererbung Codewiederverwendung und Spezialisierung ermöglicht. Schließlich haben Sie Instanzen dieser Klassen erstellt und ihre speak-Methoden aufgerufen, um die verschiedenen Ausgaben zu beobachten.