Python classmethod()-Funktion
Python3 integrierte Funktionen
classmethod()Es ist eine in Python integrierte Funktion, mit der eine Methode in eine Klassenmethode umgewandelt wird.
Eine Klassenmethode ist eine Methode, die zur Klasse und nicht zur Instanz gehört; ihr erster Parameter ist die Klasse selbst (normalerweise cls genannt). Klassenmethoden können auf Klassenattribute zugreifen, aber nicht auf Instanzattribute.
Wortdefinitionen: classmethod 是 class method(类方法)的缩写。
Grundlegende Syntax und Parameter
Syntaxformat
classmethod(function)
Parameterbeschreibung
- Parameter function:
- Typ: Funktionsobjekt
- Beschreibung: Die Funktion, die in eine Klassenmethode umgewandelt werden soll.
Funktionsbeschreibung
- Rückgabewert: Gibt ein Klassenmethodenobjekt zurück.
- Eigenschaften: Der erste Parameter ist die Klasse selbst (cls), nicht die Instanz (self).
Beispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
class MyClass:
class_attr = 0
@classmethod
def increment(cls):
cls.class_attr += 1
return cls.class_attr
@classmethod
def get_count(cls):
return cls.class_attr
# Über die Klasse aufgerufen (keine Instanziierung erforderlich)
print(MyClass.increment()) # Ausgabe: 1
print(MyClass.increment()) # Ausgabe: 2
print(MyClass.get_count()) # Ausgabe: 2
# Kann auch über eine Instanz aufgerufen werden (aber ungewöhnlich)
obj = MyClass()
print(obj.increment()) # Ausgabe: 3
class_attr = 0
@classmethod
def increment(cls):
cls.class_attr += 1
return cls.class_attr
@classmethod
def get_count(cls):
return cls.class_attr
# Über die Klasse aufgerufen (keine Instanziierung erforderlich)
print(MyClass.increment()) # Ausgabe: 1
print(MyClass.increment()) # Ausgabe: 2
print(MyClass.get_count()) # Ausgabe: 2
# Kann auch über eine Instanz aufgerufen werden (aber ungewöhnlich)
obj = MyClass()
print(obj.increment()) # Ausgabe: 3
Erwartete Ausgabe:
1 2 2 3
Code-Erklärung:
- Klassenmethoden werden mit dem @classmethod-Dekorator definiert.
- Der erste Parameter ist cls, der die Klasse selbst repräsentiert.
Beispiel 2: Fabrikmethode
Beispiel
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
"""Objekt aus Dictionary erstellen"""
return cls(data['name'], data['age'])
@classmethod
def from_string(cls, s):
"""Objekt aus String erstellen (Format: name-age)"""
name, age = s.split('-')
return cls(name, int(age))
def __str__(self):
return f"{self.name}, {self.age} Jahre alt"
# Fabrikmuster unter Verwendung von Klassenmethoden
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")
print(p1) # Ausgabe: Tom, 20 Jahre alt
print(p2) # Ausgabe: Jerry, 25 Jahre alt
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
"""Objekt aus Dictionary erstellen"""
return cls(data['name'], data['age'])
@classmethod
def from_string(cls, s):
"""Objekt aus String erstellen (Format: name-age)"""
name, age = s.split('-')
return cls(name, int(age))
def __str__(self):
return f"{self.name}, {self.age} Jahre alt"
# Fabrikmuster unter Verwendung von Klassenmethoden
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")
print(p1) # Ausgabe: Tom, 20 Jahre alt
print(p2) # Ausgabe: Jerry, 25 Jahre alt
Erwartete Ausgabe:
Tom, 20岁 Jerry, 25岁
Klassenmethoden werden häufig verwendet, um Fabrikmethoden zum Erstellen von Objekten aus verschiedenen Datenquellen zu implementieren.
Python3 integrierte Funktionen
Andere Erweiterungen