【问题标题】:Creating classes inside a loop Python在循环 Python 中创建类
【发布时间】:2014-12-29 23:03:24
【问题描述】:

我正在开发一个 Python 项目,我想做类似下一个示例的操作,但不正确。我需要一些帮助,拜托!

names = ['name1', 'name2']

for name in names:
    class name:
        [statements]

谢谢!

【问题讨论】:

标签: python class loops


【解决方案1】:

class 语句需要一个硬编码的类名。不过,您可以使用type 函数来创建此类动态类。

names = ['name1', 'name2']
class_dict = {}
for name in names:
    # statements to prepare d
    class_dict[name] = type(name, (object,), d)

这里,d 是一个字典,它应该包含您在类中定义的任何属性和方法。 class_dict 用于存储您的 class 对象,因为将动态名称直接注入全局命名空间是一个坏主意。

这是使用type 函数创建类的具体示例。

d = {}
d['foo'] = 5
def initializer(self, x):
    self.x = x + 6
d['__init__'] = initializer
MyClass = type('MyClass', (object,), d)

这将产生与以下class 语句相同的类。

class MyClass(object):
    foo = 5
    def __init__(self, x):
        self.x = x + 6

【讨论】:

  • 由于type() 创建了<type 'type'>(不是classobj)的对象,我们可以将(object,) 替换为()。但是是的显式比隐式好。 :-)
  • 啊,真的,我看到type 实例继承自object,无论您是否在基类元组中包含object
猜你喜欢
  • 2020-09-16
  • 2021-04-29
  • 2016-10-17
  • 2018-01-16
  • 2016-05-29
  • 2021-10-06
  • 2021-07-12
  • 2019-01-31
  • 2021-10-15
相关资源
最近更新 更多