- def __new__(cls, name, *args, **kwargs):
- if name not in sys.modules:
- return super().__new__(cls, name, *args, **kwargs)
-
- assert not args and not kwargs, 'Cannot pass additional arguments to an existing module'
- module = sys.modules[name]
- module.__class__ = cls
- return module
-
- def __init__(self, name, *args, **kwargs):
- # Prevent __new__ from trigerring __init__ again
- if name not in sys.modules:
- super().__init__(name, *args, **kwargs)
-