在循环Python中创建类

时间:2014-12-29 23:03:24

标签: python class loops

我正在研究一个Python项目,我想做下一个例子,但是不正确。我需要一些帮助!

names = ['name1', 'name2']

for name in names:
    class name:
        [statements]

谢谢!

1 个答案:

答案 0 :(得分:4)

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