Die Beispiele in diesem Artikel beschreiben gebundene und ungebundene Klassenmethoden in Python. Teilen Sie es wie folgt als Referenz mit allen:
Wie Funktionen sind auch Klassenmethoden in Python Objekte. Da auf Methoden sowohl über Instanzen als auch über Klassen zugegriffen werden kann, gibt es in Python zwei Stile:
Ungebundene Klassenmethode: kein Selbst
übergibt Klasse an Referenzmethode gibt eine ungebundene Methode zurück Methodenobjekt. Um es aufzurufen, müssen Sie explizit eine Instanz als erstes Argument angeben.
Gebundene Instanzmethode: Es gibt self
, um ein gebundenes Methodenobjekt über die Instanzzugriffsmethode zurückzugeben. Python bindet automatisch eine Instanz an die Methode, sodass wir beim Aufruf keinen Instanzparameter übergeben müssen.
Beide Methoden sind Objekte, sie können übergeben, in Listen gespeichert und auf sie gewartet werden. Beide Laufzeiten erfordern eine Instanz als erstes Argument (einen Selbstwert), Python stellt jedoch automatisch eine Instanz bereit, wenn eine gebundene Methode über eine Instanz aufgerufen wird. Beispielsweise führen wir den folgenden Code aus:
class Test: def func(self,message): print message object1=Test() x=object1.func x('绑定方法对象,实例是隐含的') t=Test.func t(object1,'未绑定的方法对象,需要传递一个实例') #t('未绑定的方法对象,需要传递一个实例') #错误的调用
object1=Test() generiert eine Instanz, object1.func gibt eine gebundene Methode zurück und legt fest Instanzobjekt1 An Methode func binden.
Und Test.func verwendet eine Klasse, um auf eine Methode zu verweisen, und wir erhalten ein ungebundenes Methodenobjekt. Um es aufzurufen, müssen Sie einen Instanzparameter übergeben, z. B. t(object1, „Ungebundenes Methodenobjekt, Sie müssen eine Instanz übergeben“).
Meistens rufen wir Methoden direkt auf, sodass wir das Methodenobjekt im Allgemeinen nicht bemerken. Wenn Sie jedoch anfangen, Code zu schreiben, der generische Objekte aufruft, müssen Sie den ungebundenen Methoden besondere Aufmerksamkeit schenken, die die Übergabe eines Instanzparameters erfordern.
Für eine detailliertere Analyse der Verwendung gebundener und ungebundener Klassenmethoden in Python beachten Sie bitte die chinesische PHP-Website!