如何在 Python 构造函数中分配关键字可变参数?
How can I assign keyword varargs in a Python constructor?
我使用参数 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
.
Return the value for key if key is in the dictionary, else default. If
default is not given, it defaults to None, so that this method never
raises a 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
我使用参数 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
.
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a 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