Подтвердить что ты не робот

Динамическое создание классов - Python

Мне нужно динамически создавать класс. Чтобы идти дальше, мне нужно динамически создать подкласс класса Django Form.

Динамически я намереваюсь создать класс на основе конфигурации, предоставляемой пользователем.


например.

Мне нужен класс с именем CommentForm, который должен подкласса класса Form

Класс должен иметь список выбранных атрибутов

.... в этом случае

name = forms.CharField()

комментарий = forms.CharField(widget = forms.Textarea())


Какие-нибудь полезные советы?:)

4b9b3361

Ответ 1

Вы можете создавать классы "на лету", вызывая встроенный type, передавая соответствующие аргументы, например:

CommentForm = type("CommentForm", (Form,), { 
    'name': forms.CharField(),
    ...
})

Он работает с классами нового стиля. Я не уверен, будет ли это работать и с классами старого стиля.

Ответ 2

Классы могут быть определены почти где угодно.

def newclass(val):
  class C(object):
    def __str__(self):
      return str(val)
  return C

MyClass = newclass(5)
m = MyClass()
print str(m)