Похоже, что класс Singleton подойдет для вашего случая использования. Существует несколько способов реализации одноэлементного класса в python. Обратитесь к этому ответу для более подробного объяснения.
Хотя для вашего случая использования вы можете сделать что-то вроде этого:
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
# don't want __init__ to be called every time
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class Lib(metaclass=Singleton):
def __init__(self, msg):
self.msg = msg
def print_msg():
print(self.msg)
submod1
from lib import Lib
def test():
Lib().print_msg()
основной файл
from lib import Lib:
import submod1, submod2
lib = Lib('message')
submod1.test()
submod2.test()