【问题标题】:Can you use string formatting for classes in Python?你可以在 Python 中对类使用字符串格式吗?
【发布时间】:2014-04-26 07:06:23
【问题描述】:

我需要给类命名某些东西,例如:

for a in range(10):
    class Class#"%s"(object): % (num)
         '''Class Content'''
    num += 1

我的问题,这可能吗,如果没有,还有什么替代方法。

【问题讨论】:

  • 您发现自己需要这样做的事实表明您的方法可以改进。更大的图景是什么?你为什么要这样做,你想达到什么目的?
  • 您好,欢迎来到 Stack Overflow - 无需添加已解决的问题。通过单击复选标记,您已经向更广泛的社区表明您已经获得了所需的答案。谢谢!
  • @Ben,对不起,我只是习惯了使用 Ubuntu 论坛,我的错。 :)

标签: python string class format


【解决方案1】:

您可以使用元类(用于创建类的东西)来做到这一点。示例:

>>> type('ClassName', (), {})
<class '__main__.ClassName'>

第二个参数是基类的元组,第三个参数是包含attribute name -> attribute value 对的字典:

>>> cls = type('ClassName', (object,), {'varname': 'var'})
>>> cls.varname
'var'

来自documentation on type function

使用三个参数,返回一个新的类型对象。这本质上是类语句的动态形式。 name 字符串为类名,成为__name__ 属性;基元组逐项列出基类并成为__bases__ 属性;并且 dict 字典是包含类主体定义的命名空间,并成为 __dict__ 属性。


阅读this awesome answer了解更多详情。

【讨论】:

  • 因此,根据我的阅读,我需要将名称、类型(如对象)和不同的属性放在字典中,如下所示:{"self.var: var}。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2010-10-07
  • 2013-02-27
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
相关资源
最近更新 更多