[Python-Dev] PyDict_Get/SetItem and dict subclasses

Antoine Pitrou solipsis at pitrou.net
Sun Nov 6 17:39:02 CET 2011


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).

Regards

Antoine.



More information about the Python-Dev mailing list