[Python-Dev] PEP 253: Subtyping Built-in Types
Guido van Rossum
guido@digicool.com
Sun, 22 Jul 2001 22:40:27 -0400
> What I did was to enhance the base class' tp_alloc and tp_dealloc
> APIs to only use the free list in case the type being passed to the
> APIs is a base type; in all other cases, standard processing takes
> place.
>
> Perhaps ints could do the same ?
Yes, that's what I was planning to do.
> > The simplified rule is that a type should only provide *either*
> > tp_getattr *or* tp_getattro, and likewise for set. The complete rule
> > is that if you insist on having both tp_getattr and tp_getattro, they
> > should implement the same semantics -- tp_getattr should be faster
> > when PyObject_GetAttrString() is called, and tp_getattro should be
> > faster when PyObject_GetAttr() is called.
>
> Ah, ok, didn't know that rule.
Well, I just made it up today. :-)
But it's a sensible rule, if you want predictable results.
> I'll move to the new scheme for 2.2 then and leave the old tp_getattr
> around for backward compatibility.
You should #ifdef on the Python version, unless you make your
tp_getattr do everything that tp_getattro does (possibly by calling on
the latter).
--Guido van Rossum (home page: http://www.python.org/~guido/)