Instance vs. Static vs. Class-Methoden in Python Die wichtigsten Unterschiede

Instance vs. Static vs. Class-Methoden in Python Die wichtigsten Unterschiede / Programmierung

Python-Methoden können oft verwirrend sein, sobald Sie mit der objektorientierten Programmierung (OOP) vertraut sind. In diesem Handbuch werden die drei wichtigsten Methodentypen 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-Skripts zu programmieren. Sobald Sie jedoch mit OOP fortfahren, können die Unterschiede große Änderungen bewirken.

Wenn Sie mit Python noch nicht vertraut sind oder einfach experimentieren möchten, ohne etwas installieren zu müssen, besuchen Sie diese interaktiven Python-Shells. Probieren Sie Python in Ihrem Browser mit diesen kostenlosen interaktiven Online-Shells aus. Versuchen Sie Python in Ihrem Browser mit diesen kostenlosen interaktiven Online-Interaktionen Shells Ob Sie diese Python-Beispiele durcharbeiten oder die Grundlagen von Arrays und Listen durchsehen, Sie können den Code direkt in Ihrem Browser testen. Hier sind die besten Online-Python-Interpreter, die wir gefunden haben. Weiterlesen .

Bevor wir beginnen: Dekorateur-Muster verstehen

Bevor Sie sich die Unterschiede ansehen, ist es wichtig, ein Designmuster zu kennen, das als Dekorateur Muster, oder einfach als Dekorateur.

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

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

Das Dekorationsmuster ist die bevorzugte Methode von Python zur Definition von statischen oder Klassenmethoden. So sieht man in Python aus:

class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" "print ('Hello, World!') @staticmethod def example_function ():" "" Diese Methode wird eingerichtet! " "" print ('Ich bin eine dekorierte Funktion!') de = DecoratorExample () de.example_function ()

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

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

Instanzmethoden in Python

Instanzmethoden sind die am häufigsten verwendeten Methoden 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 Autoklasse erstellt wurden, haben sie möglicherweise unterschiedliche Eigenschaften. 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. Das Selbst ist ein weiterer Python-Begriff. Innerhalb einer Instanzmethode können Sie self verwenden, um auf Daten oder Methoden zuzugreifen, die möglicherweise in Ihrer Klasse enthalten sind. Du kannst nicht auf sie zugreifen, ohne durch dich selbst zu gehen.

Da Instanzmethoden am häufigsten verwendet werden, ist kein Dekorateur erforderlich. Jede von Ihnen erstellte Methode wird automatisch als Instanzmethode erstellt, sofern Sie dies nicht anders angeben.

Hier ist ein Beispiel:

class DecoratorExample: "" "Beispiel Klasse" "" def __init __ (self): "" "Beispiel Setup" "" "print ('Hello, World!') self.name = 'Decorator_Example' def Beispielfunktion (self):" "" Diese Methode ist eine Instanzmethode! "" "Print ('Ich bin eine Instanzmethode!') Print ('Mein Name ist' + self.name) de = DecoratorExample () de.example_function ()

Das Name Variable wird durch aufgerufen selbst. Beachten Sie, dass wann Beispielfunktion heißt, Sie müssen sich nicht selbst übergeben - Python macht das für Sie.

Statische Methoden in Python

Statische Methoden sind Methoden, die in gewisser Weise mit einer Klasse in Beziehung stehen, jedoch 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 Ihre Methode einfach aufrufen:

class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" "print ('Hello, World!') @staticmethod def example_function ():" "" Diese Methode ist eine statische Methode ! "" "print ('Ich bin eine statische Methode!') de = DecoratorExample.example_function ()

Das @staticmethod Dekorator 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 abgeschlossen sein und nur mit Daten arbeiten, die als Argumente übergeben werden. Sie können eine statische Methode verwenden, um zwei Zahlen zusammenzufügen oder eine bestimmte Zeichenfolge zu drucken.

Klassenmethoden in Python

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

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

Klassenmethoden werden mit dem erstellt @classmethod Dekorateur.

class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" "print ('Hello, World!') @classmethod def example_function (cls):" "" Diese Methode ist eine Klasse method! "" "print ('Ich bin eine Klassenmethode!') cls.some_other_function () @staticmethod def some_other_function (): print ('Hello!') de = DecoratorExample () de.example_function ()

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

Wann ist jeder Methodentyp zu verwenden?

Es mag eine schwierige und entmutigende Entscheidung sein, wenn Sie zwischen den Methodentypen in Python wählen, aber Sie werden sich bald mit etwas Übung einlassen.

Selbst wenn Sie nur kleine Skripts schreiben, um Spaß zu haben, ist das Erlernen einer anderen OOP-Funktion von Python eine großartige Fähigkeit, die Sie kennen sollten. Dies kann dazu beitragen, die Fehlerbehebung und die spätere Wiederverwendung von Code zu erleichtern.

In Summe:

  1. Instanzmethoden: Der häufigste 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. Vollständig in sich geschlossener Code.
  3. Klassenmethoden: Kann auf begrenzte Methoden in der Klasse zugreifen. Kann klassenspezifische Details ändern.

Wenn dieses Tutorial ein wenig fortgeschritten war oder nicht ganz das, wonach Sie gesucht haben, dann werfen Sie doch einen Blick auf diese Kurse, um von Python-Anfänger zu Pro 5-Kurs zu wechseln, der Sie von Python-Anfänger zu Pro-5-Kurs führt Nehmen Sie vom Python-Anfänger zum Profi Mit diesen fünf Kursen erfahren Sie alles über das Programmieren in Python, einer der heißesten Sprachen, die es derzeit gibt. Weiterlesen ? Diese 5 Websites eignen sich auch für Python-Anfänger. Wenn Sie eine physische, reale Welt von Python verwenden möchten, sich aber vom Raspberry Pi langweilen, wie wäre es mit unserem Leitfaden zur Steuerung von Arduino mit Python. So programmieren und steuern Sie einen Arduino mit Python Es ist nicht möglich, ein Arduino direkt in Python zu programmieren, aber Sie können es über USB mit einem Python-Programm steuern. Hier ist wie. Weiterlesen ?

Erfahren Sie mehr über: Programmierung, Python.