hash
후드 아래에서 Python 함수 를 이해하려고합니다 . 모든 인스턴스가 동일한 해시 값을 반환하는 사용자 지정 클래스를 만들었습니다.
class C:
def __hash__(self):
return 42
위의 클래스의 인스턴스는 한 번에 하나만있을 수 있다고 가정 dict
했지만 실제로 dict
는 동일한 해시를 가진 여러 요소를 가질 수 있습니다.
c, d = C(), C()
x = {c: 'c', d: 'd'}
print(x)
# {<__main__.C object at 0x7f0824087b80>: 'c', <__main__.C object at 0x7f0823ae2d60>: 'd'}
# note that the dict has 2 elements
좀 더 실험을 해보니 __eq__
클래스의 모든 인스턴스가 동일하게 비교 되도록 메서드를 재정의 dict
하면 하나의 인스턴스 만 허용 된다는 것을 알았습니다 .
class D:
def __hash__(self):
return 42
def __eq__(self, other):
return True
p, q = D(), D()
y = {p: 'p', q: 'q'}
print(y)
# {<__main__.D object at 0x7f0823a9af40>: 'q'}
# note that the dict only has 1 element
따라서 dict
동일한 해시를 가진 여러 요소를 가질 수있는 방법을 알고 싶습니다 .