Heim >Backend-Entwicklung >Python-Tutorial >Wie füge ich Instanzmethoden in Python hinzu und greife darauf zu?

Wie füge ich Instanzmethoden in Python hinzu und greife darauf zu?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 17:38:10731Durchsuche

How Do I Add and Access Instance Methods in Python?

Zugriff auf Instanzmethoden

In Python gibt es für Objekte zwei Arten von Methoden: Funktionen und gebundene Methoden. Gebundene Methoden sind einer bestimmten Instanz zugeordnet und übergeben die Instanz beim Aufruf als erstes Argument. Funktionen hingegen sind ungebunden und können jederzeit geändert werden.

Um den Unterschied zu veranschaulichen:

def foo():
    print("foo")

class A:
    def bar(self):
        print("bar")

a = A()

print(foo)  # <function foo at 0x00A98D70>
print(a.bar)  # <bound method A.bar of <__main__.A instance at 0x00A9BC88>>

Methoden zu Klassendefinitionen hinzufügen

Sie können Klassendefinitionen ändern, um neue Methoden für alle Instanzen hinzuzufügen. Im Folgenden wird beispielsweise eine fooFighters-Methode zur A-Klasse hinzugefügt:

def fooFighters(self):
    print("fooFighters")

A.fooFighters = fooFighters

a2 = A()
a2.fooFighters()  # fooFighters

# Also affects previously defined instances
a.fooFighters()  # fooFighters

Methoden zu einzelnen Instanzen hinzufügen

Das Hinzufügen von Methoden zu einzelnen Instanzen ist komplexer. Der folgende Versuch schlägt fehl, weil die Funktion nicht an die Instanz gebunden ist:

def barFighters(self):
    print("barFighters")

a.barFighters = barFighters

a.barFighters()  # TypeError: barFighters() takes exactly 1 argument (0 given)

Um die Funktion zu binden, verwenden Sie die MethodType-Funktion aus dem Typenmodul:

import types
a.barFighters = types.MethodType(barFighters, a)

a.barFighters()  # barFighters

# Other instances unaffected
a2.barFighters()  # AttributeError: A instance has no attribute 'barFighters'

Weitere Untersuchung von Deskriptoren und die Metaklassenprogrammierung bietet fortgeschrittenere Techniken zur Manipulation von Objektmethoden.

Das obige ist der detaillierte Inhalt vonWie füge ich Instanzmethoden in Python hinzu und greife darauf zu?. 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