在 boto3 中工作时使用多重调度重载

问题描述 投票:0回答:1

我想要两个使用这些 boto3 函数的同名函数(重载)。 函数体会有所不同,因为角色有标签,但组没有。

get_role(RoleName = rolename)
get_group(GroupName = groupname)

我到底要如何实现这一点,是否可能,或者我的想法是否错误?

python-3.x boto3
1个回答
0
投票

我不认为

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 用户思考他们传递给你的内容,这对每个人来说都是更好的交易,而不是试图补偿他们可能做的任何事情,这基本上是不可知的,对吗?

你明白了。如果您深思熟虑,您的解决方案将变得简单且实用。是的!

© www.soinside.com 2019 - 2024. All rights reserved.