Динамическое создание классов - Python
Мне нужно динамически создавать класс. Чтобы идти дальше, мне нужно динамически создать подкласс класса Django Form.
Динамически я намереваюсь создать класс на основе конфигурации, предоставляемой пользователем.
например.
Мне нужен класс с именем CommentForm, который должен подкласса класса Form
Класс должен иметь список выбранных атрибутов
.... в этом случае
name = forms.CharField()
комментарий = forms.CharField(widget = forms.Textarea())
Какие-нибудь полезные советы?:)
Ответы
Ответ 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)