<div dir="ltr">On Thu, Sep 19, 2013 at 4:12 AM, Nick Coghlan <span dir="ltr"><<a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><p dir="ltr">On 19 Sep 2013 20:00, "Paul Moore" <<a href="mailto:p.f.moore@gmail.com" target="_blank">p.f.moore@gmail.com</a>> wrote:<br>

><br>
> On 19 September 2013 10:32, Ronald Oussoren <<a href="mailto:ronaldoussoren@mac.com" target="_blank">ronaldoussoren@mac.com</a>> wrote:<br>
> > The first time a method is called the bridge looks for an Objective-C selector<br>
> > with the same name and adds that to the class dictionary. This works fine for normal<br>
> > method lookups, by overriding __getattribute__, but causes problems with super:<br>
> > super happily ignores __getattribute__ and peeks in the class __dict__ which may<br>
> > not yet contain the name we're looking for and that can result in incorrect results<br>
> > (both incorrect AttributeErrors and totally incorrect results when the name is<br>
> > not yet present in the parent class' __dict__ but is in the grandparent's __dict__).<br>
><br>
> As an alternative approach, could you use a custom dict subclass as<br>
> the class __dict__, and catch the peeking in the class __dict__ that<br>
> way? Or is this one of those places where only a real dict will do?</p>
</div><p dir="ltr">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.</p>
<p dir="ltr">I've played with changing that - it makes for a rather special interpreter experience :)</p></blockquote><div>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).</div>
<div><br></div><div>-eric</div></div></div></div>