在__cmp__
中,我读到了:
如果没有定义__cmp__(), __eq__() or __ne__()
操作,则按对象标识(“地址”)比较类实例。
CPython实现细节:除了数字之外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。
identity是否意味着id()函数返回的值(long int)?
地址比较,就好像它们是整数一样?或者他们被比作字符串?
我试着写自己的例子,但我无法弄清楚如何。
答案 0 :(得分:2)
地址/标识与id()
一起返回,这将返回一个整数值,所以是的,它们按整数排序。
来自官方文件:
ID(对象)
返回对象的“标识”。这是一个整数(或长整数),它保证在该生命周期内对于该对象是唯一且恒定的。两个具有非重叠生命周期的对象可能具有相同的id()值。
CPython实现细节:这是内存中对象的地址。
自己测试一下。打开交互式控制台并编写以下内容:
>>> class Test(object):
>>> pass
>>> test1 = Test()
>>> test2 = Test()
>>>
>>> print id(test1), id(test2)
35677712 35678128 # You can see the second one is bigger. Both integers!
>>>
>>> print test1 > test2
False
>>> print test1 < test2
True
无论如何,这完全没用。并在Python 3中引发错误