Я работаю с ORM, который принимает классы как входные данные, и мне нужно уметь подкармливать некоторые динамически сгенерированные классы. В настоящее время, я делаю что-то вроде этого надуманного примера:Каков наименее плохой способ создания классов Python во время выполнения?
def make_cls(_param):
def Cls(object):
param = _param
return Cls
A, B = map(make_cls, ['A', 'B'])
print A().foo
print B().foo
Хотя это прекрасно работает, он чувствует себя охлаждают немного: например, оба класса печатается как <class '__main__.Cls'>
на заменах. Хотя проблема с именами не очень важна (я думаю, что смогу ее обойти, установив __name__
), интересно, есть ли другие вещи, о которых я не знаю. Так что мой вопрос: есть ли лучший способ создать классы динамически или мой пример в основном прекрасен?
Возможный дубликат http://stackoverflow.com/questions/4513192/python-dynamic-class-names – Cez
Как Роман отмечает ниже, вы хотите использовать 'type' динамически создавать классы. Верхний ответ в [этом вопросе] (http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python) охватывает это очень подробно. – aganders3
"ORM"? Какой ОРМ? Коэффициенты хороши, ORM делает большую часть этого для вас. –