Python: вызов функции в качестве метода классаPython

Программы на Python
Anonymous
 Python: вызов функции в качестве метода класса

Сообщение Anonymous »

Давайте начнем с некоторого кода: < /p>

Код: Выделить всё

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

Обратите внимание, что func является нормальной функцией, и мы делаем это методом f1 класса.
Мы может видеть, что F2 получает экземпляр класса в качестве первого аргумента, но F1 и F3 не являются, даже если все функции называются как методы класса. Мы также можем видеть, что если мы называем нормальную функцию в качестве метода класса, Python не делает из нее связанный метод.
Так почему F1 или f3 < /code> не получение экземпляра класса, передавшего его, даже когда мы называем его методом класса? А также, как Python знает, что мы называем внешнюю функцию как метод, чтобы он не должен передавать экземпляру.

Подробнее здесь: https://stackoverflow.com/questions/135 ... of-a-class

Вернуться в «Python»