Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调用\uuuu散列\uuuuu()方法_Python_Class_Methods - Fatal编程技术网

Python 调用\uuuu散列\uuuuu()方法

Python 调用\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)的成员执行的操作

我定义class
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()