Python 如何将单个值应用于所有kwarg值?
我有一个接受kwarg的类,如果kwarg不存在,则默认为TruePython 如何将单个值应用于所有kwarg值?,python,keyword-argument,Python,Keyword Argument,我有一个接受kwarg的类,如果kwarg不存在,则默认为True class MyClass(object): def __init__(self, **kwargs): self.kwarg_one = kwargs.get('kwarg_one', True) self.kwarg_two = kwargs.get('kwarg_two', True) MyClass是从子类继承的父类 class MyOtherClass(MyClass)
class MyClass(object):
def __init__(self, **kwargs):
self.kwarg_one = kwargs.get('kwarg_one', True)
self.kwarg_two = kwargs.get('kwarg_two', True)
MyClass是从子类继承的父类
class MyOtherClass(MyClass):
def __init__(self, **kwargs):
super(SubclassOne, self).__init__(**kwargs)
在MyClass中,kwarg_one和kwarg_one将包含布尔值,这些布尔值将加载大多数子类将使用的特定信息,但某些子类将不需要加载这些信息。在这种情况下,我可以为我不需要加载的特定kwarg传入False
moc = MyOtherClass(kwarg_one=False)
在另一种情况下,我将拥有仍然需要固有MyClass的类,但不需要加载父类加载的任何信息
moc = MyOtherClass(kwarg_one=False, kwarg_two=False)
只有两个Kwarg并不坏,但我预见我的类会接受多个参数,并且必须将False传递到10+个参数中可能会变得非常困难
是否有一种方法可以一次性传入False以使所有KWARG都为False?您应该使用dict.fromkeys来使用来自iterable和给定值的键构建一个新的dict
moc = MyOtherClass(**dict.fromkeys(('kwarg_one', 'kwarg_two'), False))
如果我理解正确,你可以在MyClass上使用,arg_one=False,arg_two=False,**kwargs,不是吗?您还可以使用默认配置dict,将所有默认值设置为false,并使用update方法将kwargs作为参数,从而使用kwargs中设置的值覆盖默认值。