Вы можете сделать:
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()
не возражает против использования двух последовательностей разной длины).