Hash Sage中默认的散列方法是什么?

Hash Sage中默认的散列方法是什么?,hash,sage,Hash,Sage,我有一个从SageObject继承的Sage类。根据Python文档 默认情况下,用户定义的类具有\uuu cmp\uu()和\uu hash\uuu()方法;和他们一起, 所有对象都比较不相等(除了它们自己)和x.\uuu hash\uuuu()返回id(x) 然而,我的类没有做到这一点,尽管它没有实现自己的\uuuuu散列\uuuu方法。相反,它使用其字符串表示形式的散列值(由其\uuu str\uu方法返回的散列值)。这是Sage类设计的一部分,与普通Python类不同吗?是否存在Sage

我有一个从SageObject继承的Sage类。根据Python文档

默认情况下,用户定义的类具有
\uuu cmp\uu()
\uu hash\uuu()
方法;和他们一起, 所有对象都比较不相等(除了它们自己)和
x.\uuu hash\uuuu()
返回
id(x)


然而,我的类没有做到这一点,尽管它没有实现自己的
\uuuuu散列\uuuu
方法。相反,它使用其字符串表示形式的散列值(由其
\uuu str\uu
方法返回的散列值)。这是Sage类设计的一部分,与普通Python类不同吗?是否存在Sage可以查找的位置层次结构,以便找到可接受的散列值?

幸运的是,您自己实际上已经回答了这个问题。尝试
技巧来查找源代码

sage: SageObject.__hash__??
Type:       wrapper_descriptor
Base Class: <type 'wrapper_descriptor'>
String Form:    <slot wrapper '__hash__' of 'sage.structure.sage_object.SageObject' objects>
Namespace:  Interactive
Definition: SageObject.__hash__(self)
Source:
    def __hash__(self):
        return hash(self.__repr__())
sage:SageObject.\uuuu散列??
类型:包装器描述符
基类:
字符串形式:
名称空间:交互式
定义:SageObject.\uuuuu散列\uuuuu(自)
资料来源:
定义散列(自我):
返回散列(self.\u repr\u())
所以,是的,这些事情大部分都是故意的。如果您想为哈希实现不同的功能,我想您可以。值得在其中一个Sage列表中询问,这是否是您感兴趣的代码,并且认为它可能与某些内容冲突