Python classmethod()-Funktion

Python3 内置函数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

Erwartete Ausgabe:

1
2
2
3

Code-Erklärung:

  1. Klassenmethoden werden mit dem @classmethod-Dekorator definiert.
  2. 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

Erwartete Ausgabe:

Tom, 20岁
Jerry, 25岁

Klassenmethoden werden häufig verwendet, um Fabrikmethoden zum Erstellen von Objekten aus verschiedenen Datenquellen zu implementieren.


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen