我想在 Python 中导入和创建动态类。
我拥有的是一本包含 Scikit-learn 分类器的字典,例如:
# 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'
任何帮助将不胜感激,
耐莉