Einführung
In diesem Lab werden Sie Klassen und Instanzen in Python untersuchen und lernen, wie Sie prüfen können, ob ein Objekt eine Instanz einer Klasse ist. Sie beginnen damit, eine Dog-Klasse mit Klassen- und Instanzattributen zu erstellen, erstellen dann Instanzen der Dog-Klasse und greifen auf deren Attribute zu.
Anschließend lernen Sie, die Funktion isinstance() zur Typüberprüfung zu verwenden und vergleichen sie mit der Funktion type() für exakte Übereinstimmungen. Dies ermöglicht es Ihnen, zu bestimmen, ob ein Objekt zu einer bestimmten Klasse oder einer Unterklasse dieser Klasse gehört und vermittelt ein tieferes Verständnis der objektorientierten Programmierung in Python.
Klassen und Instanzen erkunden
In diesem Schritt lernen Sie etwas über Klassen und Instanzen in Python. Klassen sind wie Baupläne für die Erstellung von Objekten, und Instanzen sind die tatsächlichen Objekte, die aus diesen Bauplänen erstellt werden. Das Verständnis von Klassen und Instanzen ist grundlegend für die objektorientierte Programmierung in Python.
Zunächst erstellen wir eine einfache Klasse namens Dog.
Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
Erstellen Sie eine neue Datei namens
dog.pyim Verzeichnis~/project.~/project/dog.pyFügen Sie den folgenden Code in die Datei
dog.pyein:## Define a class called Dog class Dog: ## Class attribute species = "Canis familiaris" ## Instance attribute def __init__(self, name, age): self.name = name self.age = ageHier definieren wir eine Klasse namens
Dog. Das Attributspeciesist ein Klassenattribut, was bedeutet, dass es von allen Instanzen derDog-Klasse geteilt wird. Die Methode__init__ist eine spezielle Methode, die Konstruktor genannt wird. Sie wird verwendet, um die Instanzattributenameundagezu initialisieren, wenn ein neuesDog-Objekt erstellt wird.Jetzt erstellen wir Instanzen der
Dog-Klasse. Fügen Sie den folgenden Code am Ende der Dateidog.pyhinzu:## Create instances of the Dog class buddy = Dog("Buddy", 9) miles = Dog("Miles", 4) ## Access instance attributes print(f"{buddy.name} is {buddy.age} years old.") print(f"{miles.name} is {miles.age} years old.") ## Access class attribute print(f"{buddy.name} is a {buddy.species}.") print(f"{miles.name} is a {miles.species}.")In diesem Teil erstellen wir zwei Instanzen der
Dog-Klasse:buddyundmiles. Anschließend greifen wir auf ihre Instanzattribute (nameundage) und das Klassenattribut (species) über die Punktnotation (.) zu.Um das Skript
dog.pyauszuführen, öffnen Sie ein Terminal in VS Code und führen Sie den folgenden Befehl aus:python dog.pySie sollten die folgende Ausgabe sehen:
Buddy is 9 years old. Miles is 4 years old. Buddy is a Canis familiaris. Miles is a Canis familiaris.Diese Ausgabe bestätigt, dass Sie erfolgreich Instanzen der
Dog-Klasse erstellt und auf deren Attribute zugegriffen haben.
Verwenden von isinstance() für die Typüberprüfung
In diesem Schritt lernen Sie, wie Sie die Funktion isinstance() in Python verwenden, um zu prüfen, ob ein Objekt eine Instanz einer bestimmten Klasse ist. Dies ist ein nützliches Werkzeug, um sicherzustellen, dass Ihr Code verschiedene Objekttypen korrekt verarbeitet.
Basierend auf der Dog-Klasse aus dem vorherigen Schritt erstellen wir eine neue Python-Datei, um isinstance() zu untersuchen.
Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
Erstellen Sie eine neue Datei namens
type_check.pyim Verzeichnis~/project.~/project/type_check.pyKopieren Sie die Definition der
Dog-Klasse ausdog.pyintype_check.py. Ihretype_check.py-Datei sollte nun wie folgt aussehen:class Dog: species = "Canis familiaris" def __init__(self, name, age): self.name = name self.age = ageJetzt fügen wir etwas Code hinzu, um die Funktion
isinstance()zu verwenden. Fügen Sie den folgenden Code am Ende der Dateitype_check.pyhinzu:## Create instances of the Dog class buddy = Dog("Buddy", 9) miles = Dog("Miles", 4) ## Check if buddy is an instance of the Dog class print(isinstance(buddy, Dog)) ## Check if miles is an instance of the Dog class print(isinstance(miles, Dog)) ## Check if a string is an instance of the Dog class print(isinstance("Hello", Dog))Hier erstellen wir zwei Instanzen der
Dog-Klasse,buddyundmiles. Anschließend verwenden wir die Funktionisinstance(), um zu prüfen, ob diese Instanzen vom TypDogsind. Wir prüfen auch, ob die Zeichenkette "Hello" eine Instanz derDog-Klasse ist.Um das Skript
type_check.pyauszuführen, öffnen Sie ein Terminal in VS Code und führen Sie den folgenden Befehl aus:python type_check.pySie sollten die folgende Ausgabe sehen:
True True FalseDie Ausgabe zeigt, dass
buddyundmilestatsächlich Instanzen derDog-Klasse sind, während die Zeichenkette "Hello" es nicht ist.
Vergleichen mit type() für exakte Übereinstimmungen
In diesem Schritt lernen Sie, wie Sie die Funktion type() in Python verwenden und sie mit isinstance() für die Typüberprüfung vergleichen. Während isinstance() prüft, ob ein Objekt eine Instanz einer Klasse oder ihrer Unterklassen ist, gibt type() den genauen Typ eines Objekts zurück.
Um den Unterschied zu veranschaulichen, erstellen wir eine Unterklasse der Dog-Klasse und verwenden dann sowohl isinstance() als auch type(), um den Typ von Instanzen zu prüfen.
Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
Bearbeiten Sie die Datei
type_check.pyim Verzeichnis~/project.~/project/type_check.pyFügen Sie eine neue Klasse namens
GermanShepherdhinzu, die von derDog-Klasse erbt. Ihretype_check.py-Datei sollte nun wie folgt aussehen:class Dog: species = "Canis familiaris" def __init__(self, name, age): self.name = name self.age = age class GermanShepherd(Dog): def __init__(self, name, age, training_level): super().__init__(name, age) self.training_level = training_levelHier ist
GermanShepherdeine Unterklasse vonDog. Sie erbt die Attributenameundagevon derDog-Klasse und fügt ein neues Attributtraining_levelhinzu.Jetzt fügen wir etwas Code hinzu, um die Funktionen
isinstance()undtype()zu verwenden. Fügen Sie den folgenden Code am Ende der Dateitype_check.pyhinzu:## Create instances of the Dog and GermanShepherd classes buddy = Dog("Buddy", 9) sparky = GermanShepherd("Sparky", 3, "Advanced") ## Check types using isinstance() print(f"buddy isinstance Dog: {isinstance(buddy, Dog)}") print(f"sparky isinstance Dog: {isinstance(sparky, Dog)}") print(f"sparky isinstance GermanShepherd: {isinstance(sparky, GermanShepherd)}") ## Check types using type() print(f"type(buddy) == Dog: {type(buddy) == Dog}") print(f"type(sparky) == Dog: {type(sparky) == Dog}") print(f"type(sparky) == GermanShepherd: {type(sparky) == GermanShepherd}")In diesem Teil erstellen wir eine Instanz der
Dog-Klasse (buddy) und eine Instanz derGermanShepherd-Klasse (sparky). Anschließend verwenden wirisinstance()undtype(), um ihre Typen zu prüfen.Um das Skript
type_check.pyauszuführen, öffnen Sie ein Terminal in VS Code und führen Sie den folgenden Befehl aus:python type_check.pySie sollten die folgende Ausgabe sehen:
buddy isinstance Dog: True sparky isinstance Dog: True sparky isinstance GermanShepherd: True type(buddy) == Dog: True type(sparky) == Dog: False type(sparky) == GermanShepherd: TrueDie Ausgabe zeigt, dass
isinstance(sparky, Dog)Truezurückgibt, weilsparkyeine Instanz derGermanShepherd-Klasse ist, die eine Unterklasse vonDogist. Allerdings gibttype(sparky) == DogFalsezurück, weiltype(sparky)den genauen Typ zurückgibt, derGermanShepherdund nichtDogist.
Zusammenfassung
In diesem Lab haben Sie die Grundlagen von Klassen und Instanzen in Python untersucht. Sie haben gelernt, wie Sie eine Klasse definieren, einschließlich Klassenattributen und Instanzattributen, die innerhalb des __init__-Konstruktors initialisiert werden.
Anschließend haben Sie Instanzen der Dog-Klasse erstellt und ihren spezifischen Attributen Werte zugewiesen. Schließlich haben Sie sowohl Instanzattribute (Name, Alter) als auch das Klassenattribut (Spezies) mit der Punktnotation zugegriffen, was zeigt, wie man Informationen abruft, die mit Objekten und ihren Klassen verbunden sind.



