Я пытаюсь получить концептуальное представление о природе функций и методов Python. Я получаю, что функции фактически являются объектами, с методом, который вызывается при выполнении функции. Но является ли этот метод объекта-объекта фактически другой функцией?
Например:
def fred():
pass
Если я смотрю на dir(fred)
, я вижу, что у него есть атрибут с именем __call__
. Но dir(fred.__call__)
также имеет атрибут с именем __call__
. Так что fred.__call__.__call__
и так далее. Иды этой цепочки объектов __call__
предполагают, что они все различны. Действительно ли они объективны или это какой-то трюк низкого уровня интерпретатора?
Что более важно: функции или объектные методы?