我调用一个构造函数,其参数为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),而忽略那些我没有通过的参数?
答案 0 :(得分:1)
由于kwargs只不过是dict,所以可以使用所有dict方法。
特别是,如果您想要从中删除可能缺席的值,您可以使用dict.get
。
如果key在字典中,则返回key的值,否则返回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