重载__ge__和__gt__运算符

时间:2016-05-15 03:09:05

标签: python python-2.7 operator-overloading

 return self.pages >= other.pages

根据这个:http://blog.teamtreehouse.com/operator-overloading-python#comment-220271

我们必须明确说:

{{1}}

对于> =或< =运算符,但不适用于==,!=,<或>。 有人可以解释原因吗?

1 个答案:

答案 0 :(得分:1)

这是糟糕的设计。你应该总是明确地写出比较运算符正在做什么。

实际发生的事情是这样的:

  1. 你写book_1.__lt__(book_2)
  2. Python将其转换为book_1.pages < book_2
  3. 返回book_2.__gt__(book_1.pages)
  4. Python然后反转比较并执行book_2.pages > book_1.pages
  5. 这会返回__le__最终意味着什么。
  6. 当读者不必精神上解开像这样复杂的东西进行单行比较时,代码更容易理解。请永远不要写那样的代码。

    (对我而言,__ge__和{{1}}的失败原因并不明显,但这并不重要,因为你不应该写这样的代码。)< / p>