我想写一个以(variableName, value)形式接受几个变量的类.但是,变量名仅在运行时已知,并且args的数量在运行时也是已知的.在我的班上,我有一个对象,我想设置那些参数.所以我需要循环遍历所有变量和setattribute,如下所示.
setattr (self.obj, variableName, value)
self.obj.make()
Run Code Online (Sandbox Code Playgroud)
你可以做:
class C(object):
def __init__(self, **kwargs):
for (variableName, value) in kwargs.items():
# setattr(), etc.
Run Code Online (Sandbox Code Playgroud)
你打电话给谁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.
Run Code Online (Sandbox Code Playgroud)
你打电话给谁C('x', 3, 'y', 123,…).该zip()技巧args通过对分组arguments()列表的参数.您可能希望添加对传递的参数数量的检查(C(3)上面的代码接受,因为zip()不介意使用两个不同长度的序列).