Python 3.9如果字符串与类名匹配,则实例化该类(动态实例化特定类)
如果字符串变量与类的名称匹配,我想实例化一个类。在类似的问题中,似乎存在一个依赖项,即在开始时就知道类的名称。在我的例子中,我只知道输入字符串将匹配一个类的名称。我想使用这个字符串来确定我需要实例化哪个类(在许多选项中)。即加载与字符串同名的类Python 3.9如果字符串与类名匹配,则实例化该类(动态实例化特定类),python,python-3.x,python-class,Python,Python 3.x,Python Class,如果字符串变量与类的名称匹配,我想实例化一个类。在类似的问题中,似乎存在一个依赖项,即在开始时就知道类的名称。在我的例子中,我只知道输入字符串将匹配一个类的名称。我想使用这个字符串来确定我需要实例化哪个类(在许多选项中)。即加载与字符串同名的类 如果string var==目录中的类(在模块文件中),则实例化该类。 我认为新的getattr会有所帮助,但这似乎是针对方法/函数而不是类本身。我还考虑了issubclass,但参数必须是类,而不是字符串。非常感谢您的任何建议 您应该明确定义一个接口,
如果string var==目录中的类(在模块文件中),则实例化该类。
我认为新的getattr会有所帮助,但这似乎是针对方法/函数而不是类本身。我还考虑了issubclass,但参数必须是类,而不是字符串。非常感谢您的任何建议 您应该明确定义一个接口,该接口将公开的字符串映射到类的引用:
class Foo:
...
class Bar:
...
classes = {"foo": Foo, "bar": Bar}
cls_name = "foo"
obj = classes[cls_name]()
然后,您可以使用字符串在dict中查找适当的类(您将注意到,该字符串不必是类的名称):
谢谢必须删除(),因此最后的赋值是obj=classes[cls\u name]
。我不能说我明白为什么,但它是这样工作的。