У меня есть модуль, и я хотел бы контролировать, какие объекты импортируются из него. Структура выглядит примерно так:
/src
/example_pkg
__init__.py
foo.py
__init__.py
__init__.py
пусто в обоих случаях
foo.py
выглядит так:
import numpy as np
def foo_func():
x = np.sin(1)
print('sine of 1 is ' + str(x))
при импорте fooследующим образом:
import foo
dir(foo)
Я получаю этот вывод:
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'foo_func',
'np']
Для аккуратности я бы не стал импортировать np с этим, чтобы, когда я набираю foo.
и нажимал клавишу табуляции, автозаполнение(например, в spyder) просто показывает объекты из моего модуля. Я бы предпочел, чтобы команда импорта просто автоматически импортировала все объекты, созданные в foo.py
. Можно ли это сделать? Я бы предпочел избегать from foo import *
и определять все объекты в __init__.py
Я понимаю, что это основной вопрос, но я оглянулся и не вижу очевидного ответа.