是否有(干净,简单)方法将关键字args设置为参数列表中的其他关键字参数?像这样:
class Foo():
def __init__(self, kwarg1='a', kwarg2=kwarg1, kwarg3=kwarg1):
我基本上需要所有三个都具有相同的默认值而不对其进行硬编码。这样,如果用户想要将kwarg1
编辑为其他内容,则默认为kwarg2
和{{1也将默认为新值;但如果需要,仍然会允许自定义kwarg3
和kwarg2
的功能。
我想我可以这样做:
kwarg3
这有点难看。我知道这是一个奇怪的问题。如果有更清洁的方法来实现这一点,那就有点好奇了。
答案 0 :(得分:0)
试试这个,将值None
设置为kwarg1
和kwarg2
可能对您有所帮助。
class Foo:
def __init__(self,kwarg1='a',kwarg2=None,kwarg3=None):
self.kwarg1 = kwarg1
self.kwarg2 = kwarg2 if kwarg2 != None else self.kwarg2 = kwarg1
self.kwarg3 = kwarg3 if kwarg3 != None else self.kwarg3 = kwarg1
答案 1 :(得分:0)
我猜你可以摧毁你的kwargs并使用dict.setdefault
class Foo():
def __init__(self, **kwargs):
kwargs.setdefault('kwarg1', 'a')
kwargs.setdefault('kwarg2', kwargs['kwarg1'])
kwargs.setdefault('kwarg3', kwargs['kwarg1'])
self.__dict__.update(kwargs)