return self.pages >= other.pages
根据这个:http://blog.teamtreehouse.com/operator-overloading-python#comment-220271
我们必须明确说:
{{1}}
对于> =或< =运算符,但不适用于==,!=,<或>。 有人可以解释原因吗?
答案 0 :(得分:1)
这是糟糕的设计。你应该总是明确地写出比较运算符正在做什么。
实际发生的事情是这样的:
book_1.__lt__(book_2)
。book_1.pages < book_2
。book_2.__gt__(book_1.pages)
。book_2.pages > book_1.pages
。__le__
,最终意味着什么。当读者不必精神上解开像这样复杂的东西进行单行比较时,代码更容易理解。请永远不要写那样的代码。
(对我而言,__ge__
和{{1}}的失败原因并不明显,但这并不重要,因为你不应该写这样的代码。)< / p>