[Python-Dev] PyDict_Get/SetItem and dict subclasses
Raymond Hettinger
raymond.hettinger at gmail.com
Mon Nov 7 06:51:33 CET 2011
More information about the Python-Dev mailing list
Mon Nov 7 06:51:33 CET 2011
- Previous message: [Python-Dev] PyDict_Get/SetItem and dict subclasses
- Next message: [Python-Dev] Why does _PyUnicode_FromId return a new reference?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Nov 6, 2011, at 1:26 PM, Martin v. Löwis wrote: > Am 06.11.2011 17:39, schrieb Antoine Pitrou: >> Le 05/11/2011 17:34, Éric Araujo a écrit : >>> Hi Victor, >>> >>>> PyDict_GetItem() and PyDict_SetItem() don't call __getitem__ and >>>> __setitem__ >>>> for dict subclasses. Is there a reason for that? >>> >>> http://bugs.python.org/issue10977 “Currently, the concrete object C API >>> bypasses any methods defined on subclasses of builtin types.” >> >> I think that's the correct behaviour. If you expect to get an arbitrary >> mapping, just use the abstract API. You should use PyDict_GetItem when >> you know the object is exactly a dict (generally because you have >> created it yourself, or you know at least where and how it was created). > > If anybody has spare time at their hands, they should go through the > code base and eliminate all uses of concrete API where it's not certain > that the object really is of the base class (unless I missed that > somebody already did, and that any remaining occurrences would be just > minor bugs). Also check uses of PyList_SetItem and other uses of the concrete API. Raymond
- Previous message: [Python-Dev] PyDict_Get/SetItem and dict subclasses
- Next message: [Python-Dev] Why does _PyUnicode_FromId return a new reference?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list