动态创建类 - Python

发布于 2024-09-27 06:42:12 字数 366 浏览 5 评论 0原文

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

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


例如,

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

该类应该有一个选定属性的列表。

....在这种情况下

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

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

I need to dynamically create a class. To go in futher detail I need to dynamically create a subclass of Django's Form class.

By "dynamically" I intend to create a class based on configuration provided by a user.


e.g.

I want a class named CommentForm which should subclass the Form class.

The class should have a list of chosen attributes.

....in this case

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

Any useful tips? :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我早已燃尽 2024-10-04 06:42:12

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

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

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

You can create classes on the fly by calling the type built-in, passing appropriate arguments along, like:

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

It works with new-style classes. I am not sure, whether this would also work with old-style classes.

墨落成白 2024-10-04 06:42:12

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

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

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

Classes can be defined almost anywhere.

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

MyClass = newclass(5)
m = MyClass()
print str(m)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文