Instanz- vs. statische vs. Klassenmethoden in Python: Die wichtigen Unterschiede

Instanz- vs. statische vs. Klassenmethoden in Python: Die wichtigen Unterschiede

Python-Methoden können oft verwirrend sein, wenn Sie sich mit der objektorientierten Programmierung (OOP) befassen. In diesem Handbuch werden die drei Haupttypen von Methoden in Python behandelt.





Die 3 Arten von Methoden in Python

Es gibt drei Arten von Methoden in Python: Instanzmethoden , statische Methoden , und Klassenmethoden .





Es ist nicht immer erforderlich, die Unterschiede zu kennen, um grundlegende Python-Skripte zu programmieren, aber sobald Sie in OOP vordringen, können die Unterschiede eine große Veränderung bewirken.





Wenn Sie neu bei Python sind oder einfach nur experimentieren möchten, ohne etwas installieren zu müssen, besuchen Sie diese interaktive Online-Python-Shells .

Bevor wir beginnen: Dekorateurmuster verstehen

Bevor Sie sich die Unterschiede ansehen, ist es wichtig, ein Designmuster zu verstehen, das als . bekannt ist Dekorateur-Muster , oder einfach a . genannt Dekorateur .



Dekorateure klingen komplex, aber es gibt nichts zu befürchten. Dekorateure sind einfach Funktionen. Sie können sie selbst schreiben oder die in Bibliotheken enthaltenen oder die Python-Standardbibliothek verwenden.

Wie jede Funktion führen Dekorateure eine Aufgabe aus. Der Unterschied besteht darin, dass Dekorateure Logik anwenden oder das Verhalten anderer Funktionen ändern. Sie sind eine hervorragende Möglichkeit, Code wiederzuverwenden, und können dabei helfen, die Logik in einzelne Anliegen zu unterteilen.





Das Dekoratormuster ist Pythons bevorzugte Methode, um statische oder Klassenmethoden zu definieren. So sieht eine in Python aus:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

Decoratoren müssen unmittelbar vor einer Funktions- oder Klassendeklaration stehen. Sie beginnen mit dem @ sign, und im Gegensatz zu normalen Methoden müssen Sie keine Klammern am Ende setzen, es sei denn, Sie übergeben Argumente.





Es ist möglich, mehrere Dekorateure zu kombinieren, eigene zu schreiben und sie auch auf Klassen anzuwenden, aber für diese Beispiele müssen Sie nichts davon tun.

wie man buchstaben in worten umkehrt

Instanzmethoden in Python

Instanzmethoden sind der gebräuchlichste Methodentyp in Python-Klassen. Diese werden so genannt, weil sie auf eindeutige Daten ihrer Instanz zugreifen können. Wenn Sie zwei Objekte haben, die jeweils aus einer Fahrzeugklasse erstellt wurden, können sie jeweils unterschiedliche Eigenschaften haben. Sie können unterschiedliche Farben, Motorgrößen, Sitze usw. haben.

Instanzmethoden müssen haben selbst als Parameter, aber Sie müssen dies nicht jedes Mal übergeben. Self ist ein weiterer Python-Sonderbegriff. Innerhalb jeder Instanzmethode können Sie self verwenden, um auf alle Daten oder Methoden zuzugreifen, die sich möglicherweise in Ihrer Klasse befinden. Sie werden nicht in der Lage sein, auf sie zuzugreifen, ohne selbst zu gehen.

Da Instanzmethoden am weitesten verbreitet sind, wird kein Decorator benötigt. Jede von Ihnen erstellte Methode wird automatisch als Instanzmethode erstellt, sofern Sie Python nichts anderes mitteilen.

Hier ist ein Beispiel:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

Die Name auf die Variable wird zugegriffen über selbst . Beachten Sie, dass wenn Beispielfunktion aufgerufen wird, müssen Sie sich nicht selbst eingeben---Python erledigt dies für Sie.

Statische Methoden in Python

Statische Methoden sind Methoden, die in irgendeiner Weise mit einer Klasse verbunden sind, aber nicht auf klassenspezifische Daten zugreifen müssen. Sie müssen nicht verwenden selbst , und Sie müssen nicht einmal eine Instanz instanziieren, Sie können einfach Ihre Methode aufrufen:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

Die @statische Methode decorator wurde verwendet, um Python mitzuteilen, dass diese Methode eine statische Methode ist.

Statische Methoden eignen sich hervorragend für Dienstprogrammfunktionen, die eine Aufgabe isoliert ausführen. Sie müssen (und können) nicht auf Klassendaten zugreifen. Sie sollten vollständig in sich geschlossen sein und nur mit Daten funktionieren, die als Argumente übergeben werden. Sie können eine statische Methode verwenden, um zwei Zahlen zu addieren oder eine bestimmte Zeichenfolge auszugeben.

Klassenmethoden in Python

Klassenmethoden sind der dritte und letzte OOP-Methodentyp, den Sie kennen sollten. Klassenmethoden kennen ihre Klasse. Sie können nicht auf bestimmte Instanzdaten zugreifen, aber sie können andere statische Methoden aufrufen.

Klassenmethoden brauchen nicht selbst als Argument, aber sie brauchen einen Parameter namens cls . Das steht für Klasse , und wird wie self automatisch von Python übergeben.

Klassenmethoden werden mit dem @klassenmethode Dekorateur.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

Klassenmethoden sind möglicherweise die verwirrenderen der drei Methodentypen, aber sie haben ihre Verwendung. Klassenmethoden können die Klasse selbst manipulieren, was nützlich ist, wenn Sie an größeren, komplexeren Projekten arbeiten.

Wann sollten die einzelnen Methodentypen verwendet werden

Es mag wie eine schwierige und entmutigende Entscheidung erscheinen, zwischen den Arten von Methoden in Python zu wählen, aber mit etwas Übung werden Sie bald den Dreh raus haben.

beste Android-Reiniger-App ohne Werbung

Selbst wenn Sie nur zum Spaß kleine Skripte schreiben, ist das Erlernen einer anderen OOP-Funktion von Python eine großartige Fähigkeit, die Sie kennen sollten, und kann dazu beitragen, dass Ihr Code leichter zu beheben und in Zukunft leichter wiederverwendbar ist.

Zusammenfassend:

  1. Instanzmethoden: Der gebräuchlichste Methodentyp. Kann auf Daten und Eigenschaften zugreifen, die für jede Instanz eindeutig sind.
  2. Statische Methoden: Kann auf nichts anderes in der Klasse zugreifen. Völlig eigenständiger Code.
  3. Klassenmethoden: Kann auf eingeschränkte Methoden in der Klasse zugreifen. Kann klassenspezifische Details ändern.

Wenn dieses Tutorial etwas fortgeschritten war oder nicht ganz das war, wonach Sie gesucht haben, warum werfen Sie dann nicht einen Blick auf diese Kurse, um vom Python-Anfänger zum Profi zu werden? Diese 5 Websites eignen sich auch hervorragend für Python-Anfänger. Wenn Sie Python physisch und in der realen Welt verwenden möchten, aber vom Raspberry Pi gelangweilt sind, wie wäre es mit unserem Leitfaden für Arduino mit Python steuern ?

Teilen Teilen Tweet Email So reinigen Sie Ihren Windows-PC mit der Eingabeaufforderung

Wenn der Speicherplatz Ihres Windows-PCs knapp wird, bereinigen Sie den Müll mit diesen schnellen Eingabeaufforderungsdienstprogrammen.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Programmierung
  • Python
Über den Autor Joe Coburn(136 veröffentlichte Artikel)

Joe hat einen Abschluss in Informatik an der University of Lincoln, Großbritannien. Er ist ein professioneller Softwareentwickler und wenn er nicht gerade Drohnen fliegt oder Musik schreibt, ist er oft beim Fotografieren oder Videoproduzieren anzutreffen.

Mehr von Joe Coburn

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren