【发布时间】:2017-10-15 17:32:37
【问题描述】:
目前a set of functions 返回success=True 或False。
不过,我们发现这还不够好,因为False 可以同时传达“有效结果”或“无效结果”,并且我们希望在每种情况下的行为都不同。
So I think they should be changed 改为返回 {True, False, InvalidResult},其中 bool(InvalidResult) 为 false 以实现向后兼容性,但可以使用 if is InvalidResult 进行测试。
我不确定术语是什么,但我想像比较函数返回的 built-in NotImplemented 之类的东西。这在文档中称为“特殊值”,类型为 NotImplementedType。
如何创建这样的对象以及它应该具有哪些方法/属性?我也应该创建自己的类型,例如NotImplementedType,或者是否存在传达这种“标志”概念的现有类型?与True、False、None、NotImplemented等类似的对象。
【问题讨论】:
-
听起来像一个“tribool”...
None也是一个有效值还是可以用来表示没有结果? -
你不能只使用None吗? bool(None) == False
-
@endolith 好的...所以
InvalidResult = None- 你完成了吗? :p -
@endolith 您可以让无效结果引发异常。或者一个(成功,有效)元组。
-
对此主题感兴趣的 PEP:PEP 661 -- Sentinel Values