当前位置: 首页 > 面试题库 >

动态创建类-Python

晁砚
2023-03-14
问题内容

我需要动态创建一个类。为了更详细,我需要动态创建DjangoForm类的子类。

通过“动态”,我打算基于用户提供的配置创建一个类。

例如

我想要一个命名CommentFormForm该类的子类的类。

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

....在这种情况下

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

有什么有用的提示吗?:)


问题答案:

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

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

它适用于新型类。我不确定这是否也适用于老式类。



 类似资料:
  • 我们知道,type() 函数属于 Python 内置函数,通常用来查看某个变量的具体类型。其实,type() 函数还有一个更高级的用法,即创建一个自定义类型(也就是创建一个类)。 type() 函数的语法格式有 2 种,分别如下: type(obj)  type(name, bases, dict) 以上这 2 种语法格式,各参数的含义及功能分别是: 第一种语法格式用来查看某个变量(类对象)的具体

  • 问题内容: 给定一个类名,我想动态创建一个Groovy类,向其添加属性和方法。我使用创建新类 对于我使用的方法 其中it.key是字符串(方法名),it.value是闭包。这很方便,因为我可以指定方法参数类型并进行类型检查。但是,如果不给它赋值,就无法指定动态创建的属性类型。我可以通过显式定义属性的getter和setter来解决此问题。这可行,但是metaClass.name = value或m

  • 问题内容: 我试图找到有关此信息,但空手而归: 我认为可以使用反射或代理在Java中动态创建类,但我不知道如何做。我正在实现一个简单的数据库框架,在其中使用反射创建SQL查询。该方法获取具有数据库字段作为参数的对象,并基于该对象创建查询。但是,如果我还可以动态创建对象本身,那将非常有用,这样我就不必为每个表都拥有一个简单的数据包装对象。 动态类只需要简单的字段(,,),例如 这可能吗,我该怎么做?

  • 问题内容: 我们需要创建SQLAlchemy类来访问多个外部数据源,这些数据源会随着时间的推移而增加。我们为核心ORM模型使用了声明式基础,并且我知道我们可以使用autoload = True手动指定新的ORM类,以自动生成映射。 问题是我们需要能够采用以下方式动态生成它们: 并动态地将其转换为如下所示: 我们不希望类的持久时间长于打开连接,执行查询然后关闭连接所需的时间。因此,理想情况下,我们可

  • 我想创建动态laravel类,以便动态调用查询。这是我的密码 但是当我试图调用这个类以便使用这个代码创建一个对象时 我得到这个错误 函数App\CRUD::uu construct()的参数太少,在第1630行的/var/www/html/logging/vendor/laravel/framework/src/illighte/Database/Eloquent/Model.php中传递了0,至

  • 因为类也是对象,所以我们可以在程序运行的时候创建类。 Python 是动态语言。 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。 在之前,我们先了了解下 type() 函数。 首先我们新建一个 hello.py 的模块,然后定义一个 Hello 的 class , class Hello(object): def hello(self, name