[Python-Dev] super_getattro() Behaviour
Michael Hudson
mwh at python.net
Thu Apr 14 10:56:43 CEST 2005
"Phil Thompson" <phil at riverbankcomputing.co.uk> writes:
>>> Questions...
>>>
>>> 1. What is the reason why it doesn't go via tp_getattro?
>>
>> Because it wouldn't work if it did? I'm not sure what you're
>> suggesting here.
>
> I'm asking for an explanation for the current implementation. Why wouldn't
> it work if it got the attribute via tp_getattro?
Well, using type->tp_getattro is just different to looking in tp_dict
-- it finds metamethods, for example.
Hmm. Well, I'm fairly sure there is a difference, I'm not sure I can
explain it right now :(
>>> 2. A possible workaround is to subvert the ma_lookup function of the
>>> type
>>> dictionary after creating the type to do something similar to what my
>>> tp_getattro function is doing.
[...]
> Yes, having looked in more detail at the dict implementation I really
> don't want to go there.
Good :)
>>> 4. Am I missing a more correct/obvious technique? (There is no need to
>>> support classic classes.)
>>
>> Hum, I can't think of one, I'm afraid.
>>
>> There has been some vague talk of having a tp_lookup slot in
>> typeobjects, so
>>
>> PyDict_GetItem(t->tp_dict, x);
>>
>> would become
>>
>> t->tp_lookup(x);
>>
>> (well, ish, it might make more sense to only do that if the dict
>> lookup fails).
>
> That would be perfect. I can't Google any reference to a discussion - can
> you point me at something?
Well, most of the discussion so far has been in my head :)
There was a little talk of it in the thread "can we stop pretending
_PyType_Lookup is internal" here and possibly on pyobjc-dev around the
same time.
I'm not that likely to work on it soon -- I have enough moderately
complex patches to core Python I'm persuading people to think about
:-/.
>> For now, not being lazy seems your only option :-/ (it's what PyObjC
>> does).
>
> Not practical I'm afraid. I think I can only document that super doesn't
> work in this context.
Oh well. I can't even think of a way to make it fail reliably...
Cheers,
mwh
--
Java sucks. [...] Java on TV set top boxes will suck so hard it
might well inhale people from off their sofa until their heads
get wedged in the card slots. --- Jon Rabone, ucam.chat
More information about the Python-Dev
mailing list