广泛覆盖运算符(使用“ ==”进行类型检查)

时间:2019-05-03 18:40:17

标签: python python-3.x types operator-overloading

有没有一种方法可以使Python(3.6.3)在比较两个具有不同类型的对象时抛出错误?例如,我希望"2" == 2抛出错误而不是返回False

天真地,我可以在条件中添加type(a) == type(b)a == b,但我希望有一个更简单的解决方案。例如将==替换为另一个符号。

在类似的上下文中,我喜欢在Python中比较strint导致类型不匹配错误。例如,"2" >= 2引发错误。但是我正在为相等性==寻找相同的行为。

PS:我想我对这个问题的理解有些误解。确切地说,我正在寻找==的简单替代方案,该替代方案会引发不同类型的错误;而不是广泛地覆盖==的行为。

谢谢!

1 个答案:

答案 0 :(得分:3)

这是一个相对简单的解决方案,但确实需要您编辑==的所有现有用法。

更改此:

if a == b:

对此:

if isequal(a, b):

def isequal(a, b):
    assert type(a) == type(b)
    return a == b