动态创建类 - Python

Rad*_*Hex 20 python forms django class dynamic

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

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


例如

我想要一个名为CommentForm的类,它应该是Form类的子类

该类应具有所选属性的列表

....在这种情况下

name = forms.CharField()

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


任何有用的提示?:)

Dir*_*irk 33

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

CommentForm = type("CommentForm", (Form,), { 
    'name': forms.CharField(),
    ...
})
Run Code Online (Sandbox Code Playgroud)

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


Ign*_*ams 12

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

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

MyClass = newclass(5)
m = MyClass()
print str(m)
Run Code Online (Sandbox Code Playgroud)