Я портирую код с 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, но это не для меня.
Что я неправильно понимаю? Есть ли лучший способ создать экземпляр класса из строки?