Labutin
@Labutin
Web-разработчик

Как в Python создать объект, если имя класса содержится в переменной типа string?

Давайте не будем обсуждать, что это извращение :)
Есть имя класса, которое генерируется в runtime. Имя класса в переменной.
Например:
className = 'MyClass'
Как мне создать объект этого класса?
Пока нашел вот такой вариант:
obj = eval(className)()
И даже работает как надо :)

Но я всегда с большим недоверием относился к eval :) Может быть есть более правильный путь в питоне?

P.S. Python 2.7
  • Вопрос задан
  • 3629 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sheregeda
@Sheregeda
always be coding
посмотрите в сторону метакласса type
type("имя класса",
"кортеж родительских классов",
"словарь, содержащий атрибуты и их значения")

Foo = type('Foo', (), {'bar':True})

print Foo
"<class '__main__.Foo'>"

print Foo.bar
"True"

f = Foo()
print f
"<__main__.Foo object at 0x8a9b84c>"

print f.bar
"True"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы