在Python 2.7.2中将字符串与int进行比较看起来非常不一致:
x = '12'; y = 3
print x > y # True
x = 12; y = '3'
print x > y # False
根据
How does Python compare string and int?
在Python 3中,这些将引发异常。有没有办法让Python 2表现得那么好?看__future__
我无法弄清楚是否有这样的功能。
答案 0 :(得分:4)
没有。您的选择是:
编写并使用在不需要的比较中引发的包装类。
编写并使用自定义比较函数代替通常的运算符。
使用像MacroPy这样的东西,使您的自定义比较功能不那么恶劣。
不要依赖这些语义。
比较前预先检查值。
如果需要Python 3,请使用Python 3.
答案 1 :(得分:2)
你不能monkeypatch内置类型(至少不能没有去C源),你也不应该。你只能对它们进行子类化,并让它们在非法比较中引发TypeError
。
对于Python 2,这是正确的,如果有问题的行为,所以你能做的最好的事情就是切换到Python 3,这在这方面和许多其他方面更为明智。