Heim >Backend-Entwicklung >Python-Tutorial >Was sind die Unterschiede zwischen gebundenen, ungebundenen und statischen Klassenmethoden in Python?

Was sind die Unterschiede zwischen gebundenen, ungebundenen und statischen Klassenmethoden in Python?

DDD
DDDOriginal
2024-11-12 10:16:02682Durchsuche

What are the Differences Between Bound, Unbound, and Static Class Methods in Python?

Unterschiede zwischen Klassenmethoden in Python: gebunden, ungebunden und statisch

In Python können Klassenmethoden in drei Typen eingeteilt werden: gebunden, ungebunden und statisch. Das Verständnis der Unterschiede zwischen diesen Typen ist für ein effektives Klassendesign und Objektinteraktion von entscheidender Bedeutung.

Gebundene Methoden

Gebundene Methoden sind einer bestimmten Instanz einer Klasse zugeordnet. Beim Aufruf wird das erste Argument automatisch an die aufrufende Instanz gebunden. Dies ermöglicht den Zugriff auf instanzspezifische Attribute und Methoden innerhalb der Methodenausführung. Im bereitgestellten Beispiel ist method_one eine gebundene Methode:

class Test(object):
    def method_one(self):
        print("Called method_one")

Beim Aufruf über eine Instanz verhalten sich gebundene Methoden wie erwartet:

a_test = Test()
a_test.method_one()  # Output: Called method_one

Ungebundene Methoden

Ungebunden Methoden sind keiner bestimmten Instanz einer Klasse zugeordnet. Beim Aufruf ist das erste Argument nicht automatisch an eine Instanz gebunden und sie können nicht auf instanzspezifische Daten zugreifen. Im Beispiel ist method_two eine ungebundene Methode:

class Test(object):
    def method_two():
        print("Called method_two")

Versuche, ungebundene Methoden über Instanzen aufzurufen, führen zu einem TypeError, da keine Instanz bereitgestellt wird:

a_test = Test()
a_test.method_two()  # Error: TypeError: method_two() takes no arguments (1 given)

Statische Methoden

Statische Methoden sind keiner Instanz oder Klasse zugeordnet und verhalten sich wie reguläre Funktionen. Auf sie kann direkt von der Klasse aus oder mithilfe von Instanzen zugegriffen werden, sie haben jedoch keinen inhärenten Zugriff auf instanzspezifische Daten. Statische Methoden werden typischerweise für Hilfsfunktionen oder Operationen auf Klassenebene verwendet:

class Test(object):
    @staticmethod
    def method_two():
        print("Called method_two")

Statische Methoden können sowohl für Instanzen als auch für die Klasse selbst aufgerufen werden:

a_test = Test()
a_test.method_two()  # Output: Called method_two
Test.method_two()  # Output: Called method_two

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen gebundenen, ungebundenen und statischen Klassenmethoden in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn