Python 调用\uuuu散列\uuuuu()方法
我定义classPython 调用\uuuu散列\uuuuu()方法,python,class,methods,Python,Class,Methods,我定义classMyClass() 我知道,在我声明x=MyClass()之后,会自动调用\uuuuuu init\uuuu。但是\uuuuuuuuuuuuuuuuuuuu呢?它在没有被x.\uuuu hash\uuuu()显式调用的情况下工作吗? 是自动调用以\uuu开头的每个方法,还是由程序决定何时调用它们? 我查阅了许多文件以找到答案,但都没有成功 谢谢你的回答 来自Python文档: 由内置函数hash()调用,并用于对散列集合(包括set、frozenset和dict)的成员执行的操作
MyClass()
我知道,在我声明x=MyClass()
之后,会自动调用\uuuuuu init\uuuu
。但是\uuuuuuuuuuuuuuuuuuuu
呢?它在没有被x.\uuuu hash\uuuu()
显式调用的情况下工作吗?是自动调用以
\uuu
开头的每个方法,还是由程序决定何时调用它们?我查阅了许多文件以找到答案,但都没有成功 谢谢你的回答 来自Python文档: 由内置函数hash()调用,并用于对散列集合(包括set、frozenset和dict)的成员执行的操作。__hash__;()应返回一个整数。唯一需要的属性是比较相等的对象具有相同的哈希值 参考:
另外,请不要从散列()返回随机数。否,
不会自动调用散列。看看:
由内置函数hash()调用,用于对
散列集合,包括set、frozenset和dict
因此,如果有人执行hash(x)
,将调用此方法
顺便说一句,返回一个随机数是个坏主意:
唯一需要的属性是比较相等的对象具有
相同的散列值
从字面上看,的第一句话是“由内置函数hash()调用并用于对哈希集合的成员进行操作”。还有什么不清楚的呢?“另外,请不要从_uhash__;()返回随机数。”这是进行非常有趣的调试会话的一种方法。
import random
class MyClass():
def __init__(self, value):
self.value = value
def __hash__(self):
return random.randin(1, 10)
x = MyClass()