【发布时间】:2011-05-20 08:23:59
【问题描述】:
我设计了一个验证 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 而言,始终使用三参数变体是最简洁的方法。你怎么看?
【问题讨论】:
-
你不能给
domain_object分配一些默认值吗? -
... 默认值、*args/**kws、唯一方法名称...取决于。把事情简单化。这就是“Python 方式”,对吧? ;-)
-
也许您可以添加一个如何使用函数的示例,以澄清问题。
-
@Evpok 我的意图是在实现方面完全避免
domain_object参数,如果不需要的话。 -
@Space_C0wb0y:我添加了一个调用回调的示例。
标签: python oop callback overloading