Page 1 of 1

Aufrufen einer Funktion als Methode einer Klasse

Posted: 28 Jan 2025, 04:03
by Guest
Mein Code: < /p>

Code: Select all

def func(*x):
print('func:', x)

class ABC:
def __init__(self, f):
self.f1 = f

def f2(*x):
print('f2:', x)
< /code>
Einige Tests: < /p>
>>> a = ABC(func)
>>> a.f1(10)
func: (10,)
>>> a.f2(10)
f2: (, 10)
>>> a.f3 = func
>>> a.f3(10)
func: (10,)
>>> a.f1

>>> a.f2

>>> a.f3

< /code>
func
ist eine normale Funktion und ich mache es zu einer Methode F1 der Klasse.

Code: Select all

f2
erhält die Klasseninstanz als erstes Argument, aber F1 und f3 nicht, obwohl alle Funktionen als Klassenmethoden bezeichnet werden. Wenn ich eine normale Funktion als Methode einer Klasse aufrufe, erstellt Python keine gebundene Methode daraus. Eine Klasseninstanz übergeben, auch wenn sie als Methode einer Klasse bezeichnet wird? Und woher weiß Python, dass ich eine äußere Funktion als Methode aufrufe, damit sie keine Instanz an sie übergeben sollte?