Heim >Backend-Entwicklung >Python-Tutorial >Wie unterscheiden sich statische Methoden in Python von Instanzmethoden und wie werden sie aufgerufen?
Statische Methoden direkt aus Klasseninstanzen aufrufen
In Python bieten statische Methoden einen alternativen Ansatz für den Zugriff auf Klassenmethoden. Sie verhalten sich anders als Instanzmethoden, da sie keine Instanziierung erfordern und direkt über die Klasse selbst zugänglich sind.
Erstellung statischer Methoden
Um eine statische Methode zu definieren , wird der @staticmethod-Dekorator verwendet. Dieser Dekorator entfernt das Argument self aus der Methodensignatur und zeigt damit an, dass es sich um eine statische Methode handelt. Das folgende Codebeispiel demonstriert dies:
class MyClass(object): @staticmethod def the_static_method(x): print(x)
Aufruf statischer Methoden
Im Gegensatz zu Instanzmethoden können statische Methoden direkt auf der Klasseninstanz oder auf der Klasse aufgerufen werden selbst. Die folgenden Codeausschnitte veranschaulichen dieses Verhalten:
MyClass.the_static_method(2) # outputs 2 MyClass().the_static_method(2) # also outputs 2
Vergleich mit der Definition älterer statischer Methoden
Ältere Versionen von Python (2.2 und 2.3) verwendeten einen anderen Ansatz zur Definition statische Methoden, die staticmethod als Funktion anstelle eines Dekorators verwenden. Dies ist jedoch nur erforderlich, um die Kompatibilität mit alten Python-Implementierungen aufrechtzuerhalten:
class MyClass(object): def the_static_method(x): print(x) the_static_method = staticmethod(the_static_method)
Sparsamer Einsatz statischer Methoden
Es ist wichtig zu beachten, dass statische Methoden verwendet werden sollten sparsam. In den meisten Fällen bieten separate Funktionen der obersten Ebene eine klarere Lösung.
Offizielle Dokumentation
Die Python-Dokumentation beschreibt statische Methoden wie folgt:
Eine statische Methode erhält kein implizites erstes Argument. Um eine statische Methode zu deklarieren, verwenden Sie diese Redewendung:
class C: @staticmethod def f(arg1, arg2, ...): ...Die @staticmethod-Form ist eine Funktion Decorator – siehe Beschreibung der Funktionsdefinitionen in Funktionsdefinitionen für Details.
Es kann entweder für die Klasse (z. B. C.f()) oder für eine Instanz (z. B. C().f()) aufgerufen werden. Die Instanz wird bis auf ihre Klasse ignoriert.
Statische Methoden in Python ähneln denen in Java oder C. Ein fortgeschritteneres Konzept finden Sie unter classmethod().
Weitere Informationen zu statischen Methoden finden Sie in der Dokumentation zur Standardtyphierarchie in _Die Standardtyphierarchie_.
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich statische Methoden in Python von Instanzmethoden und wie werden sie aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!