Python - Klassenmethoden: Ein Anfängerleitfaden

Hallo da, zukünftige Python-Enthusiasten! Heute werden wir auf eine aufregende Reise in die Welt der Klassenmethoden in Python gehen. Keine Sorge, wenn du neu in der Programmierung bist – ich werde dein freundlicher Guide sein und alles Schritt für Schritt erklären. Also, lasst uns loslegen!

Python - Class Methods

Was sind Klassenmethoden?

Bevor wir beginnen, lassen Sie uns verstehen, was Klassenmethoden sind. Stellen Sie sich eine Klasse als ein Bauplan zum Erstellen von Objekten vor. Klassenmethoden sind besondere Funktionen, die sich auf die gesamte Klasse beziehen und nicht nur auf einzelne Objekte, die aus dieser Klasse erstellt wurden. Sie können auf Klassenattribute zugreifen und diese ändern, die von allen Instanzen der Klasse gemeinsam genutzt werden.

Erstellen von Klassenmethoden in Python

Es gibt zwei Hauptwege, um Klassenmethoden in Python zu erstellen. Lassen Sie uns beide erkunden!

Verwendung der classmethod() Funktion

Der erste Weg, eine Klassenmethode zu erstellen, besteht darin, die classmethod() Funktion zu verwenden. So sieht es aus:

class MyClass:
class_attribute = "Ich gehöre zur Klasse"

def regular_method(self):
return "Ich bin eine normale Methode"

@classmethod
def class_method(cls):
return f"Ich bin eine Klassenmethode und ich kann auf {cls.class_attribute} zugreifen"

# Erstellen einer Instanz von MyClass
mein_objekt = MyClass()

# Aufrufen der Klassenmethode
print(MyClass.class_method())
print(mein_objekt.class_method())

In diesem Beispiel ist class_method unsere Klassenmethode. Beachten Sie, wie wir cls anstelle von self als erstes Parameter verwenden. Dieses cls repräsentiert die Klasse selbst, nicht eine Instanz der Klasse.

Verwendung des @classmethod Dekorators

Der zweite Weg, der häufiger und schöner ist (meiner bescheidenen Meinung nach), besteht darin, den @classmethod Dekorator zu verwenden. Es ist, als würde wir unsere Methode mit einem besonderen Hut versehen, um Python zu sagen: "Hey, das ist eine Klassenmethode!"

class Pizza:
restaurant = "Mama Mia's"

@classmethod
def change_restaurant(cls, new_restaurant):
cls.restaurant = new_restaurant

# Ändern des Restaurantnamens
Pizza.change_restaurant("Papa John's")

print(Pizza.restaurant)  # Output: Papa John's

In diesem leckeren Beispiel haben wir eine Pizza Klasse mit einer Klassenmethode change_restaurant. Diese Methode kann das restaurant Attribut für die gesamte Klasse ändern. Lecker!

Zugreifen auf Klassenattribute in Klassenmethoden

Eine der Superkräfte von Klassenmethoden ist ihre Fähigkeit, auf Klassenattribute zuzugreifen und diese zu ändern. Lassen Sie uns das in Aktion sehen:

class Student:
school = "Python High"
total_students = 0

def __init__(self, name):
self.name = name
Student.total_students += 1

@classmethod
def change_school(cls, new_school):
cls.school = new_school

@classmethod
def get_school_info(cls):
return f"Willkommen bei {cls.school}! Wir haben {cls.total_students} Schüler."

# Erstellen einiger Schüler
alice = Student("Alice")
bob = Student("Bob")

print(Student.get_school_info())
# Output: Willkommen bei Python High! Wir haben 2 Schüler.

Student.change_school("Codecademy Academy")
print(Student.get_school_info())
# Output: Willkommen bei Codecademy Academy! Wir haben 2 Schüler.

Hier können unsere Klassenmethoden auf das school Attribut zugreifen und es ändern sowie das total_students Attribut lesen. Es ist, als hätten sie VIP-Zugang zu den geheimen Informationen der Klasse!

Dynamisch Klassenmethoden zu einer Klasse hinzufügen

Wusstest du, dass wir Methoden zu einer Klasse hinzufügen können, sogar nachdem sie definiert wurde? Es ist, als gäbe wir unserer Klasse neue Superkräfte im Flug! So geht das:

class Car:
def __init__(self, brand):
self.brand = brand

def honk(cls):
return f"{cls.__name__} macht bip bip!"

# Hinzufügen der honk Methode zur Car Klasse
Car.honk = classmethod(honk)

mein_auto = Car("Toyota")
print(mein_auto.honk())  # Output: Car macht bip bip!

Wir haben honk außerhalb der Klasse definiert und es dann als Klassenmethode hinzugefügt. Jetzt können alle unsere Car Objekte honken!

Dynamisch Klassenmethoden löschen

Genau so wie wir Methoden hinzufügen können, können wir sie auch entfernen. Es ist, als würde wir unserer Klasse einen Haarschnitt geben – manchmal müssen wir Methoden, die wir nicht mehr benötigen, abschneiden:

class Smartphone:
@classmethod
def take_selfie(cls):
return "Cheese!"

@classmethod
def make_call(cls):
return "Wähle..."

# Lassen Sie uns die take_selfie Methode entfernen
del Smartphone.take_selfie

# Dies wird funktionieren
print(Smartphone.make_call())  # Output: Wähle...

# Dies wird eine AttributeError auslösen
# print(Smartphone.take_selfie())

Aber Vorsicht bei dem Löschen von Methoden! Stellen Sie sicher, dass Sie nichts entfernen, das Sie später benötigen.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben gerade Ihre ersten Schritte in die Welt der Python-Klassenmethoden gemacht. Lassen Sie uns zusammenfassen, was wir gelernt haben:

Konzept Beschreibung
Klassenmethode Eine Methode, die sich auf die Klasse bezieht, nicht auf Instanzen
classmethod() Eine Funktion zum Erstellen von Klassenmethoden
@classmethod Ein Dekorator zum Erstellen von Klassenmethoden
cls Parameter Repräsentiert die Klasse in Klassenmethoden
Zugreifen auf Klassenattribute Klassenmethoden können auf Klassenattribute zugreifen und diese ändern
Dynamische Hinzufügung Wir können Klassenmethoden nach der Klassendefinition hinzufügen
Dynamische Löschung Wir können Klassenmethoden aus einer Klasse entfernen

Denken Sie daran, Praxis macht den Meister. Versuchen Sie, Ihre eigenen Klassen zu erstellen und experimentieren Sie mit Klassenmethoden. Bevor Sie es sich merken, werden Sie ein Python-Klassenmeister sein!

Fröhliches Coding und möge Ihre Klassen immer elegant sein! ?✨

Credits: Image by storyset