python在运行时创建一个包含另一个类的类

pro*_*ach 4 python google-app-engine types

我想在运行时生成一个类,如下所示:

from google.appengine.ext.db import djangoforms

class TestForm(ConsumerForm):
  class Meta:
    model = Consumer
Run Code Online (Sandbox Code Playgroud)

我可以用

form_model = type("TestForm", (djangoforms.ModelForm,), {})
Run Code Online (Sandbox Code Playgroud)

创建TestForm类但我不确定如何在其中创建Meta类?

Sve*_*ach 6

以与创建它的方式相同的方式创建它TestForm并将其放入TesForm字典中:

Meta = type("Meta", (), {"model": Consumer})
TestForm = type("TestForm", (djangoforms.ModelForm,), {"Meta": Meta})
Run Code Online (Sandbox Code Playgroud)

(免责声明:我通常会避免动态创建类.)

  • @mloskot:不确定.我通常会避免任何元编程技术,除非它们提供重要的代码简化.元编程代码更难阅读,更不直接. (2认同)