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 _______________________________________________ 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