У меня большой код на python со многими модулями и классами.У меня есть специальный класс, единственный экземпляр которого нужен везде по всему коду (это потоковое приложение, и этот экземпляр класса также содержит локальное хранилище потоков, блокировки и т. Д.).Немного неудобно всегда «заполнять» этот экземпляр в каждом импортируемом модуле.Я знаю, что использование globals - не лучшая практика, но в любом случае: есть ли в python «ловушка для импорта», так что я могу сделать это, чтобы мой экземпляр был доступен во всех модулях без дополнительной работы?Он должен работать как для обычного импорта, так и для импорта из мода ... и для конструкций import .Если это невозможно, можете ли вы предложить лучшее решение?Конечно, не весело передавать этот экземпляр конструкторам всех классов и т. Д. Наследование также не помогает, поскольку у меня есть модули без классов, а также мне нужен один экземпляр, а не сам класс ...
class master():
def import_module(self, name):
mod = __import__(name)
mod.m = self
return mod
[...]
m = master()
В настоящее время я думаю нечто подобное: но тогда я должен использовать m.import_module () для импорта модулей, тогда другие модули будут иметь экземпляр мастер-класса с именем «m», поэтому я могу использоватьm.import_module () тоже и т. д. Но тогда я должен отказаться от использования «обычных» операторов импорта, и я должен написать это:
example_mod = m.module_import("example_mod")
вместо этого:
import example_mod
(но наверняка я тоже могу это сделать, чтобы потом назначить "m" для example_mod.m)