Aufrufen einer Funktion als Methode einer Klasse

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Aufrufen einer Funktion als Methode einer Klasse

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.

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?

Top