On Sun, 13 Nov 2011 13:05:24 +0100 Stefan Krah <ste...@bytereef.org> wrote: > Nick Coghlan <ncogh...@gmail.com> wrote: > > > With slices or the new casts (See: http://bugs.python.org/issue5231, > > > implemented in http://hg.python.org/features/pep-3118#memoryview ), > > > it is possible to have different hashes for equal objects: > > > > Note that Antoine isn't suggesting that the underlying hash be *used* > > as the memoryview's hash (that would be calculated according to the > > same rules as the equality comparison). Instead, the ability to hash > > the underlying object would just gate whether or not you could hash > > the memoryview at all. > > I think they necessarily have to use the same hash, since: > > exporter = m1 ==> hash(exporter) = hash(m1) > m1 = m2 ==> hash(m1) = hash(m2) > > Am I missing something?
The hash must simply be calculated using the same algorithm (which can even be shared as a subroutine). It's already the case for more complicated types: >>> hash(1) == hash(1.0) == hash(Decimal(1)) == hash(Fraction(1)) True Also, I think it's reasonable to limit hashability to one-dimensional memoryviews. Regards Antoine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com