2011-04-19 51 views
0

我想寫一個類,它接受(variableName, value)形式的幾個變量。然而,只有在運行時才知道變量名稱,並且在運行時也知道參數的個數。在我的課上,我有一個對象,我想設置這些參數。所以我需要循環所有變量和setattribute如下。python類,需要幾個變量

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

回答

5

你可以這樣做:

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

,你將與C(x=3, y=123,…)調用。

如果你真的想使用[VARIABLENAME,值,...]的參數列表,你可以這樣做:

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()不介意使用兩個不同長度的序列)。