나는 실제 이유는 파이썬 2.7에서 관찰 된 행동이 무엇인지 궁금 :hashlib - 왜 다이제스트는 일치하지만 맨손 개체는 그렇지 않습니까?
import hashlib
hashlib.md5('foo') == hashlib.md5('foo')
false를 돌려줍니다. 하지만 ...
import hashlib
hashlib.md5('foo').hexdigest() == hashlib.md5('foo').hexdigest()
true를 반환합니다. hexdigest/digest가 최종 문자열 표현을 반환한다는 것을 이해합니다. 그러나 같은 데이터가 두 해시 객체에 직접 입력되었으므로 서로 평등하다고 평가해서는 안됩니까? md5 HASH
개체가 마법을 __eq__
메서드라고 할 때 내부 ID를 알고 있지 않습니까? 사물 자체가 어떤 이유로 불평등을 평가합니까? 정말 궁금해서.
hashlib.md5 ('foo')는 id와 일치하는 객체입니다. – PasteBT
_why_에 대해서는 '__eq__'을 정의하지 않았습니다 ... Well , t를 비교하는 유효한 경우 hash _objects_는 당신이'hexdigest()'를 호출 할 때까지 계산되지 않는 hash _strings_을 비교하고자 할 때 사용됩니다 ... 그래서 당신은 다이제스트를 직접 비교할 수 있습니다. – voithos
해시 객체의 내부 중간 상태를 서로 비교하는 기능은 없습니다. 물론, __eq__ 메쏘드는 구현하기 위해 digest()를 뒤에서 호출 할 수는 있지만 그만한 가치는없는 것 같습니다. 두 가지가 같은 것을 비교하고 싶다면 비교하기 위해 다이제스트 또는 16 진법으로 해시를 마무리하십시오. – gps