[Python-Dev] special method lookup: how much do we care?

Benjamin Peterson benjamin at python.org
Sat May 9 01:14:12 CEST 2009


2009/5/8 Daniel Stutzbach <daniel at stutzbachenterprises.com>:
> On Fri, May 8, 2009 at 1:09 PM, Benjamin Peterson <benjamin at python.org>
> wrote:
>>
>> I've know hit __enter__ and __exit__. The compiler
>> generates LOAD_ATTR instructions for these, so it uses the normal
>> lookup. The only way I can see to fix this is add a new opcode which
>> uses _PyObject_LookupSpecial, but I don't think we really care this
>> much. Opinions?
>
> Why does this problem arise only with __enter__ and __exit__?

Normally special methods use slots of the PyTypeObject struct.
typeobject.c looks up all those methods on Python classes correctly.
In the case of __enter__ and __exit__, the compiler generates bytecode
to look them up, and that bytecode use PyObject_Getattr.



-- 
Regards,
Benjamin


More information about the Python-Dev mailing list