Как получить объект класса из имени класса - PullRequest
1 голос
/ 07 апреля 2019

Я хочу получить ссылку на класс из объекта класса в 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'

Как я могу обойти это?

...