Форум сайта python.su
26
Мне было лень писать пример… :-)
Но я бы за такое руки отрывал. По самые гланды.
Офлайн
857
ZZZНе, там имеется в виду, что функция осталась функцией, а модулем не стала. По идее, если вызов модуля допускается, то должен быть синтаксис, который делает модуль вызываемым, навроде __call__ у класса.
Мне было лень писать пример
Отредактировано py.user.next (Окт. 1, 2014 00:23:36)
Офлайн
26
Ну так класс с __call__ туда и положить. Не? Можно даже унаследоваться от types.ModuleType.
Офлайн
857
>>> import types >>> >>> class A(types.ModuleType): ... def __call__(self): ... print(self) ... >>> import sys >>> >>> sys.modules['x'] = A('x name') >>> >>> import x >>> >>> x() <module 'x name'> >>>
ZZZ
Можно даже унаследоваться от types.ModuleType.
Офлайн
26
py.user.nextЕсли ты не питон-гуру с, хотя бы, пятилетним опытом разработки, лучше туда вообще ничего руками не писать. Эти хаки потом дорого выходят тем, кто пытается их поддерживать.
Простую функцию туда записывать - как-то не то.
Офлайн
857
ZZZНе, там есть случаи, когда такое надо.
лучше туда вообще ничего руками не писать
ZZZЕсли нужен модуль, который нужно вызывать, то, скорее всего, что-то просто не продумано.
Эти хаки потом дорого выходят
Офлайн
26
Есть, конечно, места, где это нужно. Но в девяносто девяти случаях из ста, если ты думаешь, что оно тебе надо, то скорее всего ты делаешь что-то не так. И это надо вбивать в голову новичкам, а то потом с этим адом приходится разбираться.
py.user.nextКак я тебя понимаю… Обнять и плакать, да…
мне пришлось больше месяца читать документацию (ужасно сделана) по мокам
Офлайн