So erstellen Sie eine einfache Klasse in Python
In einer objektorientierten Sprache ist eine Klasse ein erweiterbarer Code, der eine Vorlage zum Erstellen und Verwenden der Objekte dieser Klasse darstellt. Ein Objekt einer Klasse bezieht sich einfach auf eine Instanz der definierten Klasse.
Grundlagen der Python-Klasse
In der Programmiersprache Python wird jedes Datenelement als Instanz einer Klasse dargestellt. Wenn Sie mit der Sprache nicht vertraut sind, lesen Sie unseren Anfängerleitfaden zu Python, bevor Sie fortfahren.
Eine Klasse bietet eine Reihe von Verhaltensweisen in Form von Elementfunktionen (auch als Methoden bezeichnet), deren Implementierungen allen Instanzen dieser Klasse gemeinsam sind, und bestimmt auch, wie die Statusinformationen für ihre Instanz in der dargestellt werden Form von Attributen.
Der folgende Code repräsentiert ein Beispiel für eine definierte Klasse in Python. Die im Code definierte Klasse bietet eine Implementierung einer RaceCar-Klasse.
Jede Instanz der Klasse bietet ein einfaches Modell für verschiedene Automarken und enthält die folgenden Statusinformationen: Name des Autos, Name des Fahrers, Kennzeichen des Autos, aktuelle Geschwindigkeit, Geschwindigkeitsgebühr und Farbe.
Diese Fahrzeugklasse modelliert einen speziellen Sensor in jedem Fahrzeug, der eine Geldstrafe von 50 US-Dollar gegen den Fahrer des Fahrzeugs verhängt, wenn dieser das gesetzliche Tempolimit von 140 Meilen pro Stunde überschreitet.
Beispiel einer Klasse (Fahrzeugklasse)
class Car:
#Constructor
#the init method is responsible for initialising the values of the instance #variables in the class.
def __init__(self, car_name, driver_name, license_plate_number,
current_speed, speeding_charge, colour):
self.car_name = car_name
self._driver_name = driver_name
self._license_plate_number = license_plate_number
self._current_speed = current_speed
self._speeding_charge = speeding_charge
self._colour = colour
#Accessor methods
#The get_car_name method returns the name of the car
def get_car_name(self):
return self._car_name
#The get_driver_name method returns the name of the driver
def get_driver_name(self):
return self._driver_name
#The get_license_plate method returns the license plate of the car
def get_license_plate(self):
return self._license_plate
#The get_current_speed method returns the current speed at which the car is #moving
def get_current_speed(self):
return self._current_speed
#The get_speeding_charge method returns the total amount of money that the
#driver has to pay for over-speeding
def get_speeding_charge(self):
return self._speeding_charge
#The get_colour method returns the colour of our sweet ride!
def get_colour(self):
return self._colour
#Mutator methods
#The set_driver value changes the driver of our car.
def set_driver(self, new_driver):
self._driver_name = new_driver
#The speeding_ticket method ensures that the driver is charged 50 bucks when#he or she caught speeding above 140 miles per hour :(
def speeding_ticket(self, current_speed):
if current_speed <= 140:
return False
else:
self._speeding_charge += 50
return True
#The make_payment method ensures that the driver is able to pay for all the #amount that he or she owes for speeding ticket charges.
def make_payment(self, amount_paid):
self._speeding_charge -= amount_paid
Eine Erklärung des Python-Klassenbeispiels
Der "Selbst" -Parameter
Beachten Sie zunächst, dass es einen Unterschied zwischen der in der Klasse deklarierten Methodensignatur und der Methodensignatur gibt, die vom Programmierer zum Aufrufen der Funktion verwendet wird. Beispielsweise verwendet die in der Klasse definierte Methode get_colour einen Parameter, den Parameter 'self'.
Wenn der Programmierer diese Methode jedoch für eine Instanz der Klasse aufruft, gibt er keine Parameter an. Das gleiche Phänomen kann bei der speeding_ticket-Methode beobachtet werden, bei der zwei Parameter in der Klasse verwendet werden (dh self und current_speed). Der Programmierer kann diese Methode jedoch ausführen, indem er nur den Wert für den Parameter 'current_speed' angibt.
Dies liegt daran, dass der bereitgestellte Parameter 'self' dazu dient, die Methode an die Objektinstanz zu binden, für die sie aufgerufen wurde, und dass dies kein vom Programmierer anzugebender Wert ist.
Der Konstruktor
Ein Konstruktor einer Klasse bezieht sich auf die Methode der Klasse, die ein Benutzer aufrufen kann, um eine Objektinstanz dieser Klasse zu erstellen. In der Car-Klasse kann der Benutzer eine Objektinstanz mithilfe der folgenden Syntax erstellen:
#creating our very own Bugatti :)
Car(“Bugatti”, “David Sasu”, 90828, 0, 0, "Cherry Red")
Die Ausführung dieses Codes führt zu einem Aufruf der Methode __init__ in der Klasse Car. Die Verantwortung dieser Methode besteht darin, ein neu erstelltes Kreditautoobjekt mit den angegebenen Instanzwerten zu generieren. Jedes Objekt der Car-Klasse besteht aus sechs Instanzvariablen:
- _car_name
- _Fahrername
- _Nummernschild
- _momentane Geschwindigkeit
- _speeding_charge
- _Farbe
Zugriffsmethoden
Dies sind Methoden, die geschrieben werden, um auf die Statusinformationen einer Objektinstanz zuzugreifen. In der Car-Klasse wurden folgende Zugriffsmethoden geschrieben:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_speed
- get_speeding_charge
- get_colour
Mutator-Methoden:
Dies sind Methoden, die geschrieben werden, um die Statusinformationen einer Objektinstanz zu ändern. In der Car-Klasse wurden folgende Mutator-Methoden geschrieben:
- set_driver
- Strafzettel
- make_payment
Das Konzept der Verkapselung
"Kapselung" ist ein Begriff, der verwendet wird, um ein Prinzip des objektorientierten Entwurfs zu beschreiben, bei dem Komponenten eines Programms die internen Details ihrer jeweiligen Implementierungen nicht offenlegen sollten. Weitere Informationen zum Konzept der Kapselung finden Sie in unserem Artikel zur Kapselung.
Fehlerüberprüfung
Unsere Implementierung der Car-Klasse ist nicht robust, da sie abhängig von der Eingabe, die sie vom Programmierer erhält, wahrscheinlich abstürzt oder fehlerhaft funktioniert.
Beachten Sie zunächst, dass wir weder die Typen der Parameter der Methoden speeding_ticket und make_payment noch die Typen der Parameter des Konstruktors überprüfen. Dies kann zum Absturz des Programms führen, wenn der Benutzer ein Argument angibt, das nicht erwartet wurde. Wenn der Benutzer beispielsweise einen Aufruf wie speeding_ticket ("Chips ahoi") ausführt, stürzt das Programm ab, da der von der Methode erwartete Typ eine Ganzzahl und keine Zeichenfolge ist.
Jetzt verstehen Sie die Grundlagen der Python-Klasse
In diesem Artikel wurde Ihnen das Konzept einer Python-Klasse und eines Python-Klassenobjekts vorgestellt. Sie wurden auch in die Ideen eingeführt, auf denen eine Python-Klasse aufgebaut ist, z. B.: Kapselung, Selbstkennung, Zugriffsmethoden und Mutatormethoden.
Mit diesen Informationen sollten Sie in der Lage sein, eine einfache Python-Klasse selbst zu erstellen und zu testen