gpt4 book ai didi

python - 在 Python 中使用方法 "overloading"设计回调

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:27 25 4
gpt4 key购买 nike

我设计了一个验证 API,其中回调用于检查值。回调签名有两种变体:

def check(self, value):
pass

def check(self, value, domain_object):
pass

调用回调实现的示例:

for constraint in constraints:
constraint.check(value)
# or constraint.check(value, domain_object) depending on the implementation

现在,我在调用方法之前反射性地计算参数的数量,并根据结果将一个或两个参数传递给它。但这是好的风格吗?

会不会更好

  • 始终使用带有三个参数的签名:check(self, value, domain_object)
  • 对第二种情况使用不同的名称,例如 check_with_domain_object

我认为就 oop 而言,始终使用三参数变体是最简洁的方法。你怎么看?

最佳答案

最惯用的方法是先尝试两个参数,如果失败,再尝试一个:

try:
callback(value_param, domain_object_param)
except TypeError:
callback(value_param)

关于python - 在 Python 中使用方法 "overloading"设计回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com