【发布时间】:2019-05-03 18:40:16
【问题描述】:
有没有办法让 Python (3.6.3) 在比较两个不同类型的对象时抛出错误?例如,我希望"2" == 2 抛出错误而不是返回False。
天真地,我可以在条件中添加type(a) == type(b) 和a == b,但我希望有一个更简单的解决方案;比如用另一个符号替换==。
在类似的情况下,我喜欢在 Python 中比较 str 和 int 会导致类型不匹配错误。例如,"2" >= 2 会引发错误。但我正在为相等 == 寻找相同的行为。
PS:我想我有点误解了这个问题。准确地说,我正在寻找== 的简单替代方案,它会引发不同类型的错误;而不是广泛地覆盖 == 的行为。
【问题讨论】:
-
python如何知道你想抛出错误的类组合以及应该执行比较的类组合?您可能希望
strint失败,但是intfloat呢?什么时候涉及到自定义类? -
我可以想象,如果您在全球范围内应用它,这也会破坏许多第三方依赖项。改变编程语言的基本行为不是一个好主意。
-
感谢您的回复。一个愚蠢的问题,为什么不同的类型会导致
>=出现错误,而==却不会?为什么两者之间的行为不一致? -
@CHaworth,但
==不也存在这种歧义吗? -
这样想,当您检查两个对象 (a & b) 是否相等时,如果您检查 a ==b,则考虑将这两个对象都视为对象 a 的类型,或两者兼而有之如果您检查 b == a,则对象作为对象 b 的类型(不完全是它的工作原理,只是试图说明)。无论哪种方式,您都应该得到相同的结果。对于排序,您可能会发现当两者都被视为对象 a 的类型时 a > b 为真,而如果两者都被视为对象 b 的类型,则 a > b 为假(“10”>“9” vs 10 > 9 如果您尝试比较 "10" > 9)
标签: python python-3.x types operator-overloading