ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

比较python中的不同类型

2019-07-10 12:08:50  阅读:132  来源: 互联网

标签:python


首先是代码:

class myClass(object):
    def __cmp__(self, other):
        return cmp(type(self), type(other)) or cmp(self.__something, other.__something)

这是否与python中的其他类型产生相同的顺序?有没有正确的习语
为了这?

Related question:

在谷歌上看了一下我在python docs中找到了一些相关的信息.引用:

Implementation note: Objects of
different types except numbers are
ordered by their type names; objects
of the same types that don’t support
proper comparison are ordered by their
address.

这表明如果我想遵循这种行为,我应该使用

class myClass(object):
    def __cmp__(self, other):
        return (cmp(self.__class__.__name__, other.__class__.__name) or 
                cmp(self.__something, other.__something))

特别不幸的是,我可能有一个非常困难的时间来保持传递与dicts,这是我希望实现的特殊情况.

我甚至需要检查我的论点类型吗? python甚至让我看到了吗?

解决方法:

遗憾的是Python 2支持这种“外来”比较(幸运的是在Python 3中被废除).模拟内置函数行为并不容易,因为它有很多特殊情况,例如float和int直接比较(没有类型比较覆盖,因为你编码)但复杂做任何比较(除了==和!=)总是提出异常.你真的需要模仿所有这些怪癖和摆动吗?这种需求是非常不寻常的.如果你的类型是“数字”(例如看十进制.十进制),我猜它需要与其他数字类型一起使用,但是不是“可比较数字”的类型具有较少的真实字合理约束……!

标签:python
来源: https://codeday.me/bug/20190710/1423748.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有