Creación dinámica de clases – Python

Necesito crear dinámicamente una clase. Para ir con más detalle, necesito crear dinámicamente una subclase de la clase Form de Django.

De forma dinámica, pretendo crear una clase basada en la configuración proporcionada por un usuario.


p.ej

Quiero una clase llamada CommentForm que debería subclasificar la clase Form

La clase debe tener una lista de atributos elegidos.

….en este caso

name = forms.CharField ()

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


¿Algún consejo útil? 🙂

Puede crear clases sobre la marcha llamando al type integrado, pasando los argumentos apropiados, como:

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

Funciona con clases de nuevo estilo. No estoy seguro de si esto también funcionaría con clases de estilo antiguo.

Las clases se pueden definir casi en cualquier lugar.

 def newclass(val): class C(object): def __str__(self): return str(val) return C MyClass = newclass(5) m = MyClass() print str(m)