[Python-Dev] PyDict_GetItem & dict_subscript
Thomas Wouters
thomas@xs4all.net
Wed, 14 Nov 2001 12:03:32 +0100
While trying to figure out why passing an unhashable object to switch didn't
cause a TypeError: unhashable object, I found out PyDict_GetItem and
dict_subscript behave differently in that respect. PyDict_GetItem does:
hash = PyObject_Hash(key);
if (hash == -1) {
PyErr_Clear();
return NULL;
}
whereas dict_subscript does:
hash = PyObject_Hash(key);
if (hash == -1)
return NULL;
PyDict_SetItem and PyDict_DelItem both behave like dict_subscript (that is,
they propagate the error upwards, instead of clearing the error.) Is this
intentional ? Why ? :P And what is the 'right' way to do a PyDict_GetItem()
that gives the proper error-message without relying on the need for that
particular dict (which could be a subtype that has more or less
restrictions) to have hashable keys ?
--
Thomas Wouters <thomas@xs4all.net>
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!