我调用一个带有参数s=1,t=2,y=3但没有p的构造函数。因为p没有定义,所以没有设置。我已经考虑过使用*
而不是**
,但我仍然希望使用关键字。
class Creator(object):
def __init__(self, **kwargs):
if len(kwargs) > 1:
self.scenario = kwargs.pop('s')
self.t = kwargs.pop('t')
self.y = kwargs.pop('y')
self.p = kwargs.pop('p')
我如何解析我选择的参数(即var(kw)args),同时忽略那些我没有传递的参数的赋值?
由于kwargs只不过是dict,所有的dict方法都可以在上面使用。
特别是,如果您想从中检索可能不存在的值,可以使用dict.get
。
如果关键字在字典中,则返回关键字的值,否则为默认值。如果没有给定default,它默认为None,因此此方法永远不会引发KeyError。
因此代码将如下所示:
self.p = kwargs.get('p') # self.p will be None if "p" is not in kwargs
self.p = kwargs.get('p', MY_VALUE) # self.p will be MY_VALUE if "p" is not in kwargs
或者,会员资格的标准检查也可以:
if 'p' not in kwargs:
pass # do something