我想在Python中导入并动态创建类。
# list_classifiers.py
AVAILABLE_CLASSIFIERS = {
"Random Forest Classifier": RandomForestClassifier,
"KNeighbors Classifier": KNeighborsClassifier
}
我希望动态导入我的分类器(它们都作为类存储在目录中)
algorithms
)添加到字典中:
# list_classifiers.py
AVAILABLE_CLASSIFIERS = {
...,
"MyOwnClassifier": MyOwnClassifier
}
project
|-- algorithms
|-- MyOwnClassifier.py
|-- MyOtherClassifier.py
|-- list_classifiers.py
|-- ...
我所做的:
# list_classifiers.py
import importlib
tree = os.listdir('algorithms')
for filename in tree:
name = filename[:-3] # remove .py extension to get only the name of the class
importlib.import_module("project.algorithms."+name) # sys.modules.keys() contains MyOwnClassifier
# STRUGGLE GOES HERE: how to add my classes as objects?
AVAILABLE_CLASSIFIERS[name] = eval(name) # NameError: name 'MyOwnClassifier' is not defined
AVAILABLE_CLASSIFIERS[name] = globals()[name] # KeyError: 'MyOwnClassifier'
任何帮助都将不胜感激,
耐莉