Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python类,该类接受两个变量_Python_Variables - Fatal编程技术网

python类,该类接受两个变量

python类,该类接受两个变量,python,variables,Python,Variables,我想编写一个类,它以(variableName,value)的形式接受两个变量。但是,只有在运行时才知道变量名,并且在运行时才知道参数的数量。在我的类中,我有一个要设置这些参数的对象。所以我需要循环所有变量和setattribute,如下所示 setattr (self.obj, variableName, value) self.obj.make() 你可以做: class C(object): def __init__(self, **kwargs): for (v

我想编写一个类,它以(
variableName,value
)的形式接受两个变量。但是,只有在运行时才知道变量名,并且在运行时才知道参数的数量。在我的类中,我有一个要设置这些参数的对象。所以我需要循环所有变量和setattribute,如下所示

setattr (self.obj, variableName, value)
self.obj.make()
你可以做:

class C(object):
    def __init__(self, **kwargs):
        for (variableName, value) in kwargs.items():
            # setattr(), etc.
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,…)
调用它

如果确实要使用[variableName,value,…]参数列表,可以执行以下操作:

class C(object):
    def __init__(self, **kwargs):
        for (variableName, value) in kwargs.items():
            # setattr(), etc.
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()
不介意使用两个不同长度的序列)。

您可以执行以下操作:

class C(object):
    def __init__(self, **kwargs):
        for (variableName, value) in kwargs.items():
            # setattr(), etc.
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,…)
调用它

如果确实要使用[variableName,value,…]参数列表,可以执行以下操作:

class C(object):
    def __init__(self, **kwargs):
        for (variableName, value) in kwargs.items():
            # setattr(), etc.
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()
不介意使用两个不同长度的序列)