国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

實習小記-python中不可哈希對象設(shè)置為可哈希對象

2019-11-14 17:05:07
字體:
供稿:網(wǎng)友

在這篇之前,我又專門翻譯過官方python3.3的可哈希對象文檔,大家可以先參考一下:

實習小記-python中可哈希對象是個啥?what is hashable object in python?

 

預(yù)備知識:

  在定義一個類時,如果我們需要改寫該類的__eq__函數(shù),特別要注意的是它將會變?yōu)椴豢晒ο螅簿褪钦f如果你將它放到哈希集會報錯誤

 

>>> class A:...     def __init__(self, x):...         self.x = x...     def __eq__(self, other):...         return self.x == other.x...>>> a = A(1)>>> b = A(1)>>> a == bTrue>>> dic = {a:1}Traceback (most recent call last):  File "<

 

   可是如果我們定義的這個類既需要重寫__eq__函數(shù)也需要把它設(shè)定為可哈希的對象這該怎么辦呢?官方文檔里面已經(jīng)詳細描述了,我們只需在類變量中加上__hash__ = object.__hash__ 即可。

 

   

  那么問題來了,如果我們想用b為鍵值查找dic中對應(yīng)的數(shù)據(jù)可以成功嗎?

 

 

   從上面的代碼我們知道,在哈希集中對某個鍵值的查找是針對該鍵值的哈希值做比較的。即使我們重寫了__eq__也不會影響到哈希集中對應(yīng)鍵值的查找。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南皮县| 镇江市| 和龙市| 喀什市| 方正县| 安泽县| 冀州市| 交城县| 定日县| 莱阳市| 资阳市| 巴林左旗| 科技| 建阳市| 汕头市| 册亨县| 苍山县| 高淳县| 萍乡市| 本溪市| 尼勒克县| 霍城县| 株洲市| 娄底市| 湖北省| 商都县| 如皋市| 长岛县| 建始县| 苏尼特左旗| 博爱县| 肇庆市| 平度市| 吴旗县| 建瓯市| 宽城| 兰坪| 洮南市| 龙口市| 格尔木市| 泰顺县|