动态创建类 - Python
我需要动态创建一个类。具体来说,我想动态创建一个Django的 Form
类的子类。
这里的“动态”是指根据用户提供的配置来创建这个类。
比如说,
我想要一个名为 CommentForm
的类,它应该是 Form
类的子类。
这个类应该有一个选定属性的列表。
....在这种情况下
name = forms.CharField()
comment = forms.CharField(widget=forms.Textarea())
有什么有用的建议吗? :)
2 个回答
14
类几乎可以在任何地方定义。
def newclass(val):
class C(object):
def __str__(self):
return str(val)
return C
MyClass = newclass(5)
m = MyClass()
print str(m)
36
你可以通过调用内置的 type
函数来动态创建类,只需要传入合适的参数,比如:
CommentForm = type("CommentForm", (Form,), {
'name': forms.CharField(),
...
})
这个方法适用于新式类。我不太确定它是否也适用于旧式类。