从python中的位置参数创建属性

从python中的位置参数创建属性,python,attributes,Python,Attributes,我有一个成员函数,我将引用不同python对象的参数传递给它 foo(model, data) foo的定义是 def foo(self, *args): ... 如何定义此函数以便使用setattr动态设置相应类的属性。对于这个特定的案例,我想最终得到的是两个类属性,称为model和data,它们指向各自的对象。换句话说,如何结合使用args元组和setattr来设置相应名称的属性 设置属性的帮助: setattr(对象,名称,值,/) 将给定对象上的命名属性设置为指定值 seta

我有一个成员函数,我将引用不同python对象的参数传递给它

foo(model, data)
foo的定义是

def foo(self, *args):
    ...

如何定义此函数以便使用setattr动态设置相应类的属性。对于这个特定的案例,我想最终得到的是两个类属性,称为model和data,它们指向各自的对象。换句话说,如何结合使用args元组和setattr来设置相应名称的属性

设置属性的帮助:

setattr(对象,名称,值,/) 将给定对象上的命名属性设置为指定值

setattr(x, 'y', v) is equivalent to x.y = v
在定义函数时,您希望使用**args而不是*args。这给了你一个dict而不是tuple

然后你可以打一个像这样的电话

foo(model=model, data=data)
在您定义的函数中:

for key in args:
    setattr(self, key, args[key])
否则,对于元组,无法获得每个参数的名称,您必须事先知道名称,因为您是通过索引访问的