Alexander Belopolsky added the comment: I would say dict's failure to call overloaded __setitem__ from setdefault is a dict implementation problem which should be either fixed, or clearly documented as warning to anyone who wants to derive from dict.
A fix would be trivial: =================================================================== --- Objects/dictobject.c (revision 61014) +++ Objects/dictobject.c (working copy) @@ -1861,7 +1861,7 @@ val = ep->me_value; if (val == NULL) { val = failobj; - if (PyDict_SetItem((PyObject*)mp, key, failobj)) + if (PyObject_SetItem(mp, key, failobj)) val = NULL; } Py_XINCREF(val); but I have no clue what performance or other implications would be. Maybe something like this could be considered for Py3k - reviewing dict implementation to make it usable as DictMixin. I'll write a complete patch if there is positive reaction. ---------- nosy: +belopolsky _____________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue1367711> _____________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com