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
Freigeben: 2024-12-20 17:38:10
Original
734 Leute haben es durchsucht

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>>
Nach dem Login kopieren

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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'
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage