如何在python中通过变量参数(KWARG)设置类属性

假设我有一个带有构造函数(或其他函数)的类,它接受可变数量的参数,然后有条件地将它们设置为类属性

我可以手动设置它们,但在python中变量参数似乎非常常见,因此应该有一个通用的习惯用法来实现这一点。但我不知道如何动态地做到这一点

我有一个使用eval的例子,但这几乎不安全。我想知道做这件事的正确方法——也许是用lambda

类Foo:
def SETALL手动(自身,a=None,b=None,c=None):
如果一个=无:
self.a=a
如果b=无:
self.b=b
如果c=无:
self.c=c
def setAllWithEval(自身,**kwargs):
对于输入**kwargs:
如果kwargs[参数]!=没有一个
eval(“self.+key+”=“+kwargs[param]”)

您可以使用关键字参数更新\uuuu dict\uuu属性(以字典的形式表示实例属性):

类栏(对象):
定义初始(自我,**kwargs):
自我记录更新(kwargs)

然后你可以:

&gt&燃气轮机&燃气轮机;巴=巴(a=1,b=2)
&燃气轮机&燃气轮机&燃气轮机;酒吧a
1.

比如:

允许的_键={'a','b','c'}
self.\u dict\u.update((k,v)表示k,v在kwargs.items()中,如果k在允许的\u键中)

您可以预先筛选键(如果仍在使用Python2.x,请使用iterms而不是items

发表评论