python类,它接受几个变量

时间:2011-04-19 07:21:43

标签: python variables

我想写一个以(variableName, value)的形式接受几个变量的类。但是,变量名仅在运行时已知,并且args的数量在运行时也是已知的。在我的班上,我有一个对象,我想设置那些参数。所以我需要循环遍历所有变量和setattribute,如下所示。

setattr (self.obj, variableName, value)
self.obj.make()

1 个答案:

答案 0 :(得分:5)

你可以这样做:

class C(object):
    def __init__(self, **kwargs):
        for (variableName, value) in kwargs.items():
            # setattr(), etc.

您可以使用C(x=3, y=123,…)调用。

如果你真的想使用[variableName,value,...]参数列表,你可以这样做:

class C(object):
    def __init__(self, *args):
        arg_iter = iter(args)
        for (variableName, value) in zip(arg_iter, arg_iter):
            # setattr(), etc.
您使用C('x', 3, 'y', 123,…)调用的

zip()技巧按对将参数列表(args)的参数分组。您可能希望添加对传递的参数数量的检查(C(3)被上面的代码接受,因为zip()不介意使用两个不同长度的序列。)