Я незначительный вкладчик в пакет, где люди должны это делать (Foo.Bar.Bar
- это класс):
>>> from Foo.Bar import Bar
>>> s = Bar('a')
Иногда люди делают это по ошибке (Foo.Bar
- это модуль):
>>> from Foo import Bar
>>> s = Bar('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
Это может показаться простым, но пользователи все еще не могут его отладить, я хотел бы сделать это проще. Я не могу изменить имена Foo
или Bar
но я хотел бы добавить более информативный трассировку, например:
TypeError("'module' object is not callable, perhaps you meant to call 'Bar.Bar()'")
Я читаю модули Qable и Callable, и я знаю, что я не могу добавить метод __call__
в модуль (и я не хочу обертывать весь модуль в класс именно для этого). Во всяком случае, я не хочу, чтобы модуль вызывался, я просто хочу настроить трассировку. Есть ли чистое решение для Python 3.x и 2. 7+?