gpt4 book ai didi

python - 比较python中的不同类型

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:40 24 4
gpt4 key购买 nike

首先是代码:

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

这会产生与 python 中其他类型相同的顺序吗?有没有正确的成语为此?

Related question:

在 google 上四处看看,我在 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))

特别不幸的是,我可能很难用 dict 来保持传递性,这是我希望实现的一个特例。

我什至需要检查参数的类型吗? python 甚至让我看到这个吗?

最佳答案

不幸的是,Python 2 确实支持这种“外星人”比较(幸好在 Python 3 中被废除了)。模拟内置行为并不容易,因为它有很多特殊情况,例如 float 和 int 直接比较(没有编码时的类型比较覆盖)但是 complex 进行任何比较(== 和 != 除外)总是引发异常。您真的需要模仿所有这些怪癖和摆动吗?这种需求是非常不寻常的。如果你的类型是“数字”(例如 decimal.Decimal),我想它需要与其他数字类型很好地配合,但不是“可比较数字”的类型具有更少的实际意义约束......!

关于python - 比较python中的不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1175529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com