是否可以通过提供名称来创建类的实例,例如:
instance = "TestXYZ"()
假设TestXYZ由导入上述代码的类导入,TestXYZ定义为:
class TestXYZ(object):
...
答案 0 :(得分:1)
是的,有可能。机制取决于您如何导入类:
>>> globals()["TestXYZ"]()
<__main__.TestXYZ object at 0x10f491090>
或
>>> getattr(sys.modules["test_module"], "TestXYZ")()
<test_module.TestXYZ object at 0x10cf22090>
答案 1 :(得分:1)
您可以使用以下命令从当前命名空间获取对象的引用:
klass = globals()['TestXYZ']
然后你可以创建一个类的实例:
instance = klass()
答案 2 :(得分:1)
我不确定你为什么要这样做,但不是使用globals()
我建议你在这里创建一个字典:
class Foo:
pass
d = {'Foo':Foo}
ins = d['Foo']()
或者将课程移至其他模块:
import some_module
ins = getattr(some_module, 'Foo')()