On Fri, May 8, 2009 at 6:14 PM, Benjamin Peterson <benjamin@python.org> wrote:
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.

Would this problem apply to all special methods that don't use a slot in PyTypeObject, then?  I know of several other examples:

__reduce__
__setstate__
__reversed__
__length_hint__
__sizeof__

(unless I misunderstand the definition of "special methods", which is possible)
--
Daniel Stutzbach, Ph.D.
President, Stutzbach Enterprises, LLC