0

我想在 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'

任何帮助将不胜感激,

耐莉

4

0 回答 0