我想要两个使用这些 boto3 函数的同名函数(重载)。 函数体会有所不同,因为角色有标签,但组没有。
get_role(RoleName = rolename)
get_group(GroupName = groupname)
我到底要如何实现这一点,是否可能,或者我的想法是否错误?
我不认为
multipledispatch
是你的出路,在这里。如果调用签名需要一件事,来自两个可能的基类,一些 if/then
逻辑(或者嘿,甚至可能是 match/case
新的热点)检查 type(thing)
或类似的东西会让你通过。
另一种解决方案,比上面的更明确,是使用命名参数。使用您的代码片段,它看起来像这样:
def get(/, role=None, group=None):
""" Herein you’d use logic based on
the named parameters to execute
your logic accordingly
"""
...
…这也会迫使你的 API 用户思考他们传递给你的内容,这对每个人来说都是更好的交易,而不是试图补偿他们可能做的任何事情,这基本上是不可知的,对吗?
你明白了。如果您深思熟虑,您的解决方案将变得简单且实用。是的!