关于优化类创建

时间:2013-05-08 21:58:12

标签: python optimization python-2.7

假设我必须创建一个具有大量变量的类。我可以使用for循环将每个设置为自己吗? 那就是:

class New(object):
    def __init__(self, var1, var2, var3, var4, var5, var6):
        for x in [var1, var2, var3, var4, var5, var6]:
            self.x = x

显然上面的代码不起作用,但是可以这样做吗?更好的方法吗? 而不是打字

self.var1 = var1
self.var2 = var2

等?

1 个答案:

答案 0 :(得分:1)

您可以存储属性名称列表......

In [1]: class New(object):
   ...:    names = ['foo', 'bar']
   ...:    def __init__(self, *args):
   ...:        for k, v in zip(New.names, args):
   ...:            setattr(self, k, v)
   ...:             

In [2]: a = New(1, 2)

In [3]: a.foo
Out[3]: 1

或使用关键字参数:

In [1]: class New(object):
   ...:     def __init__(self, **kwargs):
   ...:         for k, v in kwargs.iteritems():
   ...:             setattr(self, k, v)
   ...: 

In [2]: a = New(foo=1, bar=2)

In [3]: a.foo
Out[3]: 1