Почему Python не позволяет модулям иметь __call__
? (Помимо очевидного, что его было бы непросто импортировать напрямую.) В частности, почему синтаксис a(b)
не использует атрибут __call__
, как это делает для функций, классов и объектов? (Является ли поиск просто несовместимым для модулей?)
>>> print open("mod_call.py").read()
def __call__():
return 42
>>> import mod_call
>>> mod_call()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
>>> mod_call.__call__()
42