动态创建类 - Python

时间:2010-10-12 13:10:08

标签: python django class forms dynamic

我需要动态创建一个类。为了进一步详细说明,我需要动态创建Django的Form类的子类。

通过动态我打算根据用户提供的配置创建一个类。


e.g。

  

我想要一个名为CommentForm 的类,它应继承Form类

     

该类应具有所选属性列表

     

....在这种情况下

     

name = forms.CharField()

     

comment = forms.CharField(widget = forms.Textarea())


有用的提示吗? :)

2 个答案:

答案 0 :(得分:32)

您可以通过调用type内置函数来动态创建类,并传递适当的参数,例如:

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

适用于新式课程。我不确定,这是否适用于旧式课程。

答案 1 :(得分:12)

几乎可以在任何地方定义类。

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

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