魔法方法__hash__

lst1 = [1,2,[1,2]]
print(lst1)
tup1 = (1,2,[1,2])
print[tup1]
set1 = {1,2,[1,2]}
print(set1)         # 报错,不存在 hash 属性
 
set2 = {“abc”,“def”,“ghi”}
print(set2)
set3 = {1,2,3}
print(set3)
  
s1 = [1,2,3]
print(hash(s1))       # 报错
s2 = (1,2,3)
print(hash(s2))       # 得到 hash 值
print(hash(1))
print(hash(“hello”))
 
 
hash 值 具备散列算法,是不一定固定的
 
  
class Student()
  def _init_(self, name, age):
    self.name = name
    self.age = age
     
  def _hash_(self):
    return hash(self.name)
    # 指定以什么来判断hash值
     
  def _eq_(self,other):
    return self.name == other.name and self.age == other.name
    # 指定以什么属性来判断不同变量之间如何作比较
     
stu1 = Student(“小强”,3000)
stu2 = Student(“小强”,3000)
stu3 = Student(“小强”,3000)
print(hash(stu1))
print(hash(stu2))
print(hash()stu3)
#·手动修改__hash__方法之后,hash值相等
 
print(stu1 == stu2 == stu3)
#·手动修改__eq__方法之后,变量相等

猜你喜欢

转载自blog.csdn.net/A_xiansheng/article/details/94598196
今日推荐