Допустим, у меня есть это:
script.py
module/
__init__.py # just contains: __all__ = ['foo', 'bar']
foo.py # has a function called foo
bar.py # has a function called bar
Если с script.py
я делаю from module import *
, это работает, но для вызова функции foo или bar мне нужно сделать foo.foo() / bar.bar()
.
Есть ли какой-нибудь способ иметь функции foo и bar в пространстве имен, поэтому я мог бы вызвать их, просто выполнив foo() / bar()
?
Редактировать: принятый ответ работает для этого примера, но после тестированияэто не работает, если в имени файла указан номер.
Например, если вы добавляете файл с именем bar2.py
с функцией с именем hello в папку модуля и соответственно редактируете __init__.py
, то в script.py
вы не сможете вызватьфункция hello напрямую (просто hello()
) над сценарием, хотя вы можете сделать bar2.hello()
, которая работает, но не совсем то, что я хочу.
Редактировать: После большого тестирования у меня естьобнаружил, что при удалении __all__ и сохранении импорта все работает.