[Python-Dev] PEP 447: add type.locallookup (original) (raw)

Eric Snow ericsnowcurrently at gmail.com
Thu Sep 19 22:21:40 CEST 2013


On Thu, Sep 19, 2013 at 4:12 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:

On 19 Sep 2013 20:00, "Paul Moore" <p.f.moore at gmail.com> wrote: > > On 19 September 2013 10:32, Ronald Oussoren <ronaldoussoren at mac.com> wrote: > > The first time a method is called the bridge looks for an Objective-C selector > > with the same name and adds that to the class dictionary. This works fine for normal > > method lookups, by overriding getattribute, but causes problems with super: > > super happily ignores getattribute and peeks in the class dict which may > > not yet contain the name we're looking for and that can result in incorrect results > > (both incorrect AttributeErrors and totally incorrect results when the name is > > not yet present in the parent class' dict but is in the grandparent's dict). > > As an alternative approach, could you use a custom dict subclass as > the class dict, and catch the peeking in the class dict that > way? Or is this one of those places where only a real dict will do?

Even Python 3 doesn't let you control the runtime type of the class dict, only the type used during evaluation of the class body. I've played with changing that - it makes for a rather special interpreter experience :) Same here. :) The PyDict_* API is not your friend for that. It's why I gave up on using a C OrderedDict for tp_dict (opting for a definition_order attribute on classes instead).

-eric -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20130919/bc4c279e/attachment.html>



More information about the Python-Dev mailing list