Hash Sage中默认的散列方法是什么?
我有一个从SageObject继承的Sage类。根据Python文档 默认情况下,用户定义的类具有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
\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列表中询问,这是否是您感兴趣的代码,并且认为它可能与某些内容冲突