如何将关键字参数值设置为其他关键字参数?

How to set keyword arguments values as other keyword arguments?

有没有一种(简洁、简单)的方法可以将关键字参数设置为参数列表中的其他关键字参数?像这样:

class Foo():
    def __init__(self, kwarg1='a', kwarg2=kwarg1, kwarg3=kwarg1):

我基本上需要所有三个都具有相同的默认值,而无需对其进行硬编码。这样,如果用户想要将 kwarg1 编辑为其他内容,则 kwarg2 和 [ 的默认值=14=] 也将默认为新值;但如果需要,仍将允许自定义 kwarg2kwarg3 的功能。

我想我可以做这样的事情:

class Foo():
    def __init__(self, kwarg1='a', kwarg2='', kwarg3=''):
        if kwarg2 == '':
            self.kwarg2 = kwarg1

        if kwarg3 == '':
            self.kwarg3 = kwarg1

只是有点丑。我知道这是一个奇怪的问题。只是有点好奇是否有更简洁的方法来完成此操作。

试试这个,将值 None 设置为 kwarg1kwarg2 可能对您有帮助。:

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

我想你可以拼写你的 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)