Код | import sys
class DriverA: def __init__(self, config): pass
class DriverB: def __init__(self, config): pass
def get_driver(config): module = sys.modules["__main__"] cls = getattr(module, config["driver"]) return cls(config)
if __name__ == "__main__": config = {"driver": "DriverA"}
print(get_driver(config))
|
Или более общий вариант. Модуль drivers.py
Код | import sys
class DriverA: def __init__(self, config): pass
class DriverB: def __init__(self, config): pass
def get_driver_cls(driver): module = sys.modules[__name__] return getattr(module, driver, None)
|
Модуль, в котором используется класс драйвера
Код | from drivers import get_driver_cls ################################################################################
config = {"driver": "DriverA"} ################################################################################
if "__main__" == __name__: cls = get_driver_cls(config["driver"]) if cls is not None: driver = cls(config) ...
|
|