getattr (имя_модуля, имя_класса) различия между питоном 2 и 3 - PullRequest
0 голосов
/ 15 октября 2019

Я портирую код с Python 2 на 3. Версия Python 2 использует этот фрагмент для успешного создания экземпляра класса:

#at this point, "module_name" is just a string
module = __import__(module_name, globals(), locals(), [])
#class_name is just a string
my_class = getattr(module, class_name)
class_instance = my_class()

В Python 3 тот же код завершается с ошибкой AttributeError, говоря, что мойИмя модуля не имеет атрибута моего имени класса. Другие подобные вопросы, которые я читал здесь, предполагают, что getattr должен работать для этой задачи в Python 3, но это не для меня.

Что я неправильно понимаю? Есть ли лучший способ создать экземпляр класса из строки?

...