gpt4 book ai didi

Python - 默认情况下,用户定义的类具有 __cmp__() 和 __hash__() 方法?或者?

转载 作者:太空狗 更新时间:2023-10-29 17:33:15 24 4
gpt4 key购买 nike

在 python 中 docs ( yeah, I have this thing with the docs ) 它说:

User-defined classes have __cmp__() and __hash__() methods by default; with them, all objects compare unequal (except with themselves) and x.__hash__() returns id(x).

但下面的代码显示了另一件事:

>>> class Test(object): pass
...
>>> t = Test()
>>>
>>> t.__hash__
<method-wrapper '__hash__' of Test object at 0x01F2B5D0>
>>>
>>> t.__cmp__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Test' object has no attribute '__cmp__'
>>>

那么 __cmp__ 在哪里或者我缺少什么?

最佳答案

文档有点误导。要了解完整的故事,您必须阅读 __cmp__ ,即这部分:

If no __cmp__(), __eq__() or __ne__() operation is defined, class instances are compared by object identity (“address”).

所以,基本上,默认情况下您不会获得__cmp__ 方法,但是可以将用户定义类的实例与其他对象进行比较;如果实例没有__cmp__ 方法,则使用对象标识(由id(obj) 确定,通常是对象的内存地址)代替。

关于Python - 默认情况下,用户定义的类具有 __cmp__() 和 __hash__() 方法?或者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903620/

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