Python 具有可选参数的适当方法签名

Python 具有可选参数的适当方法签名,python,python-3.x,Python,Python 3.x,假设我有一个具有如下构造函数的类 class SomeClass(): def __init__(self, aaa, bbb, ccc) 如果只需要aaa和bbb或ccc,最合适的方法签名是什么 在这种情况下,以下方法签名是否合适 def __init__(self, aaa=None, bbb=None, ccc=None) 我已经看到您的问题中显示的签名在流行的Python库中使用过,例如,但它们的用法是不同的:不需要精确地指定aaa、bbb、ccc,该特定函数支持指定或未指定的

假设我有一个具有如下构造函数的类

class SomeClass():

  def __init__(self, aaa, bbb, ccc)
如果只需要aaa和bbb或ccc,最合适的方法签名是什么

在这种情况下,以下方法签名是否合适

def __init__(self, aaa=None, bbb=None, ccc=None)

我已经看到您的问题中显示的签名在流行的Python库中使用过,例如,但它们的用法是不同的:不需要精确地指定
aaa
bbb
ccc
,该特定函数支持指定或未指定的每个参数,相互独立的

对于你的情况,我可能会这样做:

class SomeClass():

    def __init__(self, option, **kwargs):
        # implementation here
其用法可能如下所示:

SomeClass('aaa')
SomeClass('bbb', some_b_specific_option='some other value')
SomeClass(option='ccc')

三个都可以吗?如果不是,我可能会考虑<代码>第二个ITITY(自已,X)< /代码>,其中<代码> x>代码>必须是元组<代码>(AAA,BBB)或单个元素<代码> CCC < /代码>(在方法中检查)。谢谢您的建议。在这种情况下,这听起来更合适像
\uuuu init\uuuo(self,x:Union[Tuple[atype,btype],ctype])
这样的类型提示也会有所帮助(对于文档来说,使用任何类型的
atype
btype
ctype
都是合适的)