как динамически создавать экземпляр класса в python?

У меня есть список имен классов и вы хотите динамически создавать их экземпляры. например:

names=[ 'foo.baa.a', 'foo.daa.c', 'foo.AA', .... ] def save(cName, argument): aa = create_instance(cName) # how to do it? aa.save(argument) save(random_from(names), arg) 

Как динамически создавать экземпляры в Python? благодаря!

4 Solutions collect form web for “как динамически создавать экземпляр класса в python?”

Это часто называют отражением или иногда интроспекцией. Ознакомьтесь с аналогичными вопросами, которые отвечают за то, что вы пытаетесь сделать:

Имеет ли Python эквивалент класса Java forname

Можно ли использовать строку для создания класса в Python

Предполагая, что вы уже импортировали соответствующие классы, используя что-то вроде

 from [app].models import * 

все, что вам нужно сделать, это

 klass = globals()["class_name"] instance = klass() 

Вы можете часто избежать частичной обработки строк.

 import foo.baa import foo.AA import foo classes = [ foo.baa.a, foo.daa.c, foo.AA ] def save(theClass, argument): aa = theClass() aa.save(argument) save(random.choice(classes), arg) 

Обратите внимание, что мы не используем строковое представление имени класса.

В Python вы можете просто использовать сам класс.

Вы можете использовать инструкцию python builtin eval() для создания экземпляров ваших классов. Как это:

 aa = eval(cName)() 
  • python 3 pip устанавливает нерабочую ошибку ASCII
  • Pythonic способ разбить список на первый и отдохнуть?
  • получить mimetype файла python
  • Что означает (многоточие) в списке в Python?
  • Pythonic способ смешать два списка
  • Вывести скрипт python в текстовый файл
  • Как смоделировать многоязычные объекты в Python с помощью webapp2
  • Celery / Redis выполняет одну и ту же задачу, выполняемую несколько раз параллельно
  • Python - лучший язык программирования в мире.