Dynamically creating classes - Python
I need to dynamically create a class. To go in futher detail I need to dynamically create a subclass of Django's Form
class.
By "dynamically" I intend to create a class based on configuration provided by a user.
e.g.
I want a class named CommentForm
which should subclass the Form
class.
The class should have a list of chosen attributes.
..开发者_如何学Go..in this case
name = forms.CharField()
comment = forms.CharField(widget=forms.Textarea())
Any useful tips? :)
You can create classes on the fly by calling the type
built-in, passing appropriate arguments along, like:
CommentForm = type("CommentForm", (Form,), {
'name': forms.CharField(),
...
})
It works with new-style classes. I am not sure, whether this would also work with old-style classes.
Classes can be defined almost anywhere.
def newclass(val):
class C(object):
def __str__(self):
return str(val)
return C
MyClass = newclass(5)
m = MyClass()
print str(m)
精彩评论