如何将关键字参数值设置为其他关键字参数?
How to set keyword arguments values as other keyword arguments?
有没有一种(简洁、简单)的方法可以将关键字参数设置为参数列表中的其他关键字参数?像这样:
class Foo():
def __init__(self, kwarg1='a', kwarg2=kwarg1, kwarg3=kwarg1):
我基本上需要所有三个都具有相同的默认值,而无需对其进行硬编码。这样,如果用户想要将 kwarg1
编辑为其他内容,则 kwarg2
和 [ 的默认值=14=] 也将默认为新值;但如果需要,仍将允许自定义 kwarg2
和 kwarg3
的功能。
我想我可以做这样的事情:
class Foo():
def __init__(self, kwarg1='a', kwarg2='', kwarg3=''):
if kwarg2 == '':
self.kwarg2 = kwarg1
if kwarg3 == '':
self.kwarg3 = kwarg1
只是有点丑。我知道这是一个奇怪的问题。只是有点好奇是否有更简洁的方法来完成此操作。
试试这个,将值 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
我想你可以拼写你的 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)
有没有一种(简洁、简单)的方法可以将关键字参数设置为参数列表中的其他关键字参数?像这样:
class Foo():
def __init__(self, kwarg1='a', kwarg2=kwarg1, kwarg3=kwarg1):
我基本上需要所有三个都具有相同的默认值,而无需对其进行硬编码。这样,如果用户想要将 kwarg1
编辑为其他内容,则 kwarg2
和 [ 的默认值=14=] 也将默认为新值;但如果需要,仍将允许自定义 kwarg2
和 kwarg3
的功能。
我想我可以做这样的事情:
class Foo():
def __init__(self, kwarg1='a', kwarg2='', kwarg3=''):
if kwarg2 == '':
self.kwarg2 = kwarg1
if kwarg3 == '':
self.kwarg3 = kwarg1
只是有点丑。我知道这是一个奇怪的问题。只是有点好奇是否有更简洁的方法来完成此操作。
试试这个,将值 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
我想你可以拼写你的 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)