by Guest » 28 Jan 2025, 04:03
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.
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?
Mein Code: < /p>
[code]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[/code] ist eine normale Funktion und ich mache es zu einer Methode F1 der Klasse.
[code]f2[/code] 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?