4

在 Python 2.7.2 中将字符串与 int 进行比较看起来非常不一致:

x = '12'; y = 3
print x > y      # True
x = 12; y = '3'
print x > y      # False

根据 Python如何比较字符串和int? 在 Python 3 中,这些将引发异常。有没有办法让 Python 2 已经表现得那样?看着__future__我无法弄清楚是否有这样的功能。

4

2 回答 2

4

不,您的选择是:

  • 编写和使用会引发不需要的比较的包装类。

  • 编写和使用自定义比较函数来代替通常的运算符。

  • 使用 MacroPy 之类的东西可以让您的自定义比较函数使用起来不那么令人讨厌。

  • 不要依赖这些语义。

  • 在比较之前预先检查值。

  • 当你需要 Python 3 时使用 Python 3。

于 2013-10-12T07:30:55.467 回答
2

你不能monkeypatch 内置类型(至少不去C 源代码就不能),你也不应该。您只能对它们进行子类化,并让它们TypeError在非法比较中上升。

这是 Python 2 的正确行为(如果有问题),因此您可以做的最好的事情是切换到 Python 3,这在这方面和许多其他方面更明智。

于 2013-10-12T07:29:06.320 回答