Как сделать так, чтобы модули, импортированные в «базовом» модуле, были доступны модулям, импортирующим этот «базовый» модуль?
Пример.
#parent.py
import _mysql
class Parent:
pass
#child.py
import parent
class Child(Parent):
db = _mysql.connect(...
Вызовет ошибку, так как _mysql не находится в глобальной области видимости.
Можно написать
#parent.py
__all__ = ['_mysql']
и сделать
#child.py
from parent import *
Но насколько я понял, это не самый красивый вариант.
Существует ли реализация, при которой не нужно в «дочерних» модулях заново производить импорт общеупотребимых библиотек, которые «не засоряют» глобальную область?
Или повторный импорт — правильное решение?
Как правильно построить иерархию модулей при наследуемых классах?