如何从类名获取类对象

时间:2019-04-07 17:26:40

标签: python python-3.x python-3.6 metaprogramming

我想从Python中的类对象获取类引用。通常,我使用类名作为有效的引用,但是它并不总是有效。

考虑以下代码:

import inspect
import unittest
import pywin32_testutil
mro=inspect.getmro(pywin32_testutil.TestProgram)
mro[0]
> <class 'pywin32_testutil.TestProgram'>
mro[0].__module__ + '.' + mro[0].__name__
>'pywin32_testutil.TestProgram'
pywin32_testutil.TestProgram
> <class 'pywin32_testutil.TestProgram'>

我可以从对象中确定类名称,并使用类名称可以获取类对象。但是,它并不总是有效。继续示例:

mro[1]
> <class 'unittest.main.TestProgram'>
mro[1].__module__ + '.' + mro[1].__name__
> 'unittest.main.TestProgram'

到目前为止还不错,但是unittest.main.TestProgram引用无效:

unittest.main.TestProgram
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'TestProgram' has no attribute 'TestProgram'

我该如何解决?

0 个答案:

没有答案