Systematisches Lernen von Python - Klasse: statische Methode und Klassenmethode - [Gründe für die Verwendung statischer Methoden und Klassenmethoden]

Kategoriekatalog: Gesamtkatalog „Systematic Learning Python“


Wie wir bereits erfahren haben, übergeben Klassenmethoden normalerweise das aktuelle Instanzobjekt in ihrem ersten Parameter, um als implizites Subjekt des Methodenaufrufs zu fungieren – dies ist das „Objekt“ in der „objektorientierten Programmierung“. Heutzutage gibt es jedoch zwei Möglichkeiten, dieses Modell zu modifizieren. Bevor wir diese beiden Methoden erklären, sollten wir darlegen, warum dies für uns relevant ist.

Manchmal muss ein Programm mit Daten umgehen, die einer Klasse und nicht einer Instanz zugeordnet sind. Sie möchten beispielsweise die Anzahl der von einer Klasse erstellten Instanzen aufzeichnen oder eine Liste aller derzeit im Speicher befindlichen Instanzen einer Klasse verwalten. Diese Form von Informationen und die entsprechende Verarbeitung sind mit der Klasse verknüpft, nicht mit ihren Instanzen. Das heißt, diese Informationen werden normalerweise in der Klasse selbst gespeichert und können verarbeitet werden, ohne dass Instanzen erforderlich sind.

Für solche Aufgaben reicht oft eine einfache, außerhalb der Klasse geschriebene Funktion aus. Da sie über den Klassennamen auf Klasseneigenschaften zugreifen können, können sie auf Klassendaten zugreifen, ohne eine Instanz zu durchlaufen. Um solchen Code jedoch besser an eine Klasse zu binden und die Anpassung solcher Prozeduren wie üblich durch Vererbung zu ermöglichen, wäre es besser, solche Funktionen innerhalb der Klasse selbst zu schreiben. Dazu benötigen wir in der Klasse eine Methode, die nicht nur nicht übergibt, sondern auch keinen selfInstanzparameter erwartet.

Python unterstützt solche Ziele durch das Konzept statischer Methoden. Statische Methoden sind einfache Funktionen ohne Parameter, die in einer Klasse verschachtelt sind selfund für die Verarbeitung von Klasseneigenschaften und nicht von Instanzeigenschaften konzipiert sind. Statische Methoden akzeptieren keine automatischen selfParameter, unabhängig davon, ob sie von einer Klasse oder einer Instanz aufgerufen werden. Sie protokollieren in der Regel Informationen über alle Instanzen hinweg, anstatt das Verhalten für Instanzen bereitzustellen.

Obwohl weniger häufig verwendet, unterstützt Python auch das Konzept von Klassenmethoden. Klassenmethoden sind Methoden einer Klasse, bei denen der erste an sie übergebene Parameter ein Klassenobjekt und kein Instanzobjekt ist, unabhängig davon, ob sie über eine Instanz oder eine Klasse aufgerufen werden. Diese Methode kann auch auf Klassendaten zugreifen (wie wir oft sagen), indem sie ihre Klassenparameter übergibt self, selbst wenn sie über eine Instanz aufgerufen wird. Reguläre Methoden (Instanzmethoden) müssen beim Aufruf eine zusätzliche Subjektinstanz akzeptieren, statische Methoden und Klassenmethoden jedoch nicht.

Referenzen:
[1] Mark Lutz. Python Learning Manual[M]. Machinery Industry Press, 2018.

Supongo que te gusta

Origin blog.csdn.net/hy592070616/article/details/135433286
Recomendado
Clasificación