首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写__cmp__ python函数

重写__cmp__ python函数
EN

Stack Overflow用户
提问于 2012-10-16 06:45:31
回答 2查看 15.8K关注 0票数 4

嗨,我正在重写__cmp__。如果传递的第二个对象是None,或者它不是someClass的实例,那么它返回-1

我不明白这里到底发生了什么。

代码语言:javascript
复制
class someClass():
    def __cmp__(self, obj):
        if obj == None:
            return -1
        if not isinstance(obj, someClass):
            return -1  

我的测试功能:

代码语言:javascript
复制
def test_function(self):  
        obj1 = someClass()
        self.assertTrue(obj1 < None)
        # I get true.
        self.assertTrue(obj1 > None)
        # I get failure as False is returned.

有谁能向我解释一下:

  • 返回值是多少?
  • 当比较符号发生变化时,它如何决定返回True还是False
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 06:59:50

objNone时,程序将返回-1,而返回负整数意味着self < obj,因此obj1 < NoneTrueobj1 > Nonefalse

票数 3
EN

Stack Overflow用户

发布于 2012-10-16 06:58:29

如果您查看python 文档,您将看到cmp函数返回-1 If self < other

__cmp__(obj, None) == -1开始,它就假设obj < None

我猜如果__cmp__(obj, None)应该返回1,因为任何对象都优于任何对象:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12908933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档