Код: Выделить всё
def func(*x):
print('func:', x)
class ABC:
def __init__(self, f):
self.f1 = f
def f2(*x):
print('f2:', x)
< /code>
Теперь мы делаем некоторые тесты: < /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
Мы может видеть, что F2 получает экземпляр класса в качестве первого аргумента, но F1 и F3 не являются, даже если все функции называются как методы класса. Мы также можем видеть, что если мы называем нормальную функцию в качестве метода класса, Python не делает из нее связанный метод.
Так почему F1 или f3 < /code> не получение экземпляра класса, передавшего его, даже когда мы называем его методом класса? А также, как Python знает, что мы называем внешнюю функцию как метод, чтобы он не должен передавать экземпляру.
Подробнее здесь: https://stackoverflow.com/questions/135 ... of-a-class