Enthüllung der Natur von Funktionen, ungebundenen Methoden und gebundenen Methoden
Das Konzept von Klassen und Methoden ist grundlegend für objektorientierte Programmierparadigmen . Das Verständnis der Nuancen und Beziehungen zwischen Funktionen, ungebundenen Methoden und gebundenen Methoden ist entscheidend für die Beherrschung der Feinheiten des Methodenauflösungssystems von Python.
Definieren der Entitäten
Transformationen und Barrierefreiheit
Hauptunterschiede
Äquivalenz und Verwendung
In Python 2 und Python 3 Folgendes Ausdrücke sind funktional äquivalent:
f1(C())
C.f1(C())
C().f1()
Durch das Binden einer Funktion an eine Instanz wird eine geänderte Version erstellt, bei der der erste Parameter von Natur aus auf die angegebene Instanz festgelegt ist. Im Wesentlichen verhält sich diese gebundene Methode identisch mit den folgenden alternativen Formen:
lambda *args, **kwargs: f1(C(), *args, **kwargs)
functools.partial(f1, C())
From Unbound to Bound
Eine Python 2-Instanz einer Klasse hat kein direktes Attribut, das ungebundenen Methoden entspricht stattdessen über das __dict__-Attribut der Klasse selbst abrufbar. Der Zugriff auf eine ungebundene Methode auf einer Instanz führt jedoch zu deren automatischer Konvertierung in eine gebundene Methode.
Schlussfolgerung
Erfassen der Unterschiede zwischen Funktionen, ungebundenen Methoden und gebundenen Methoden ermöglicht es Ihnen, den Methodenauflösungsmechanismus von Python effektiv zu nutzen. Wenn Sie die Mechanismen der Bindung und Transformation verstehen, können Sie die Komplexität der objektorientierten Codierung mühelos bewältigen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3