Sage中的默认__hash__方法是什么?

时间:2012-05-25 21:17:35

标签: hash sage

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

  

默认情况下,用户定义的类具有__cmp__()__hash__()方法;跟他们,   所有对象都比较不相等(除了自己),x.__hash__()返回id(x)

但是,尽管它没有实现自己的__hash__方法,但是我的类没有这样做。相反,它使用其字符串表示形式的哈希值(由__str__方法返回的哈希值)。这是Sage类设计的一部分,与普通的Python类不同吗?为了找到可接受的哈希值,是否存在Sage可能看起来的层次结构?

1 个答案:

答案 0 :(得分:1)

幸运的是,你几乎自己回答了这个问题。尝试使用??技巧找到源代码。

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列表中询问。