Вот примерный набросок реестра классов, который вы можете использовать следующим образом:
class ClassRegistry(object):
def __init__(self):
self.classes = {}
def add_file_classes(self, fname, class_list):
globals = {}
exec open(fname) in globals
for class_name in class_list:
self.classes[class_name] = getattr(globals, class_name)
def get_class(self, class_name):
return self.classes[class_name]
Прочитайте ваш конфигурационный файл и вызовите add_file_classes
следующим образом:
reg = ClassRegistry()
reg.add_file_classes("/var/imports/foo.py", ["baz", "monkey"])
reg.add_file_classes("/var/imports/bar.py", ["ape"])
затем позже
cls = reg.get_class("baz")
Обратите внимание, что мы на самом деле не импортируем файлы, а просто выполняем их и собираем их результаты.