[Python-Dev] frozendict (was: Possible patch for functools partial...) (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Sun May 16 13:10:02 CEST 2010


Antoine Pitrou wrote:

On Sun, 16 May 2010 11:55:14 +1000 Yaniv Aknin <yaniv at aknin.name> wrote:

Is the whole notion of a frozendict worthy, given this limitation? I don't think so. Of course we how have a more general problem: - if we choose to implement only equality testing for partials and leave hashing as is, then hashing isn't consistent with equality anymore -- which is unacceptable - if we choose to implement only equality testing for partials and make them unhashable, we are breaking programs which store partials in a set or a dict So we are left with the following choice: - implement hashing consistently with equality testing, even though the keyword arguments can be changed later. I think this is acceptable from a practicality standpoint

Another option is to compare the keywords by identity rather than value. This is likely to be more correct anyway, since items may compare equal without giving the same result for all functions:

dict(a=1) == dict(a=1.0) True partial(type, 1)() <type 'int'> partial(type, 1.0)() <type 'float'>

Once you're comparing the supplied arguments by identity rather than value, the question of hashability goes away.

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list