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
都是合适的)