Eine Methode ist eine Funktion, die eine Klasseninstanz als ersten Parameter verwendet. Methoden sind Mitglieder von Klassen.
class C:
def method(self, possibly, other, arguments):
pass
Da Sie wissen wollten, was es in Python speziell bedeutet, können Sie zwischen gebundenen und ungebundenen Methoden unterscheiden. In Python sind alle Funktionen (und damit auch Methoden) Objekte, die herumgereicht und "gespielt" werden können. Der Unterschied zwischen ungebundenen und gebundenen Methoden ist also:
1) Gebundene Methoden
instance = C()
print instance.method
instance.method(1, 2, 3)
f = instance.method
f(1, 2, 3)
Gebundene Methoden sind Methoden, die zu Instanzen einer Klasse gehören. In diesem Beispiel instance.method
ist an die aufgerufene Instanz gebunden instance
. Jedes Mal, wenn diese gebundene Methode aufgerufen wird, wird die Instanz automatisch als erster Parameter übergeben - was gemäß self
Konvention aufgerufen wird.
2) Ungebundene Methoden
print C.method
instance = C()
C.method(instance, 1, 2, 3)
f = C.method
f(instance, 1, 2, 3)
instance.method(1, 2, 3)
Wenn Sie auf C.method
die Methode innerhalb einer Klasse anstatt innerhalb einer Instanz zugreifen , erhalten Sie eine ungebundene Methode. Wenn Sie es nennen wollen, müssen Sie die Instanz als ersten Parameter übergeben , da das Verfahren nicht in jedem Fall gebunden.
Wenn Sie diesen Unterschied kennen, können Sie Funktionen / Methoden als Objekte verwenden, z. B. Methoden weitergeben. Stellen Sie sich als Beispiel für einen Anwendungsfall eine API vor, mit der Sie eine Rückruffunktion definieren können, aber eine Methode als Rückruffunktion bereitstellen möchten. Kein Problem, einfach self.myCallbackMethod
als Rückruf übergeben und es wird automatisch mit der Instanz als erstem Argument aufgerufen. Dies wäre in statischen Sprachen wie C ++ (oder nur mit Tricks) nicht möglich.
Hoffe du hast den Punkt verstanden;) Ich denke das ist alles was du über Methodengrundlagen wissen solltest. Sie könnten auch mehr über die classmethod
und staticmethod
Dekorateure lesen , aber das ist ein anderes Thema.