[Python-Dev] OT: A Day in the Life of p5p

Ka-Ping Yee pingster@ilm.com
Wed, 28 Jun 2000 13:22:15 -0700 (PDT)


On Wed, 28 Jun 2000, Andrew Kuchling wrote:
> You could imagine a Python implementation that added flag
> bits to every object, and set a bit if there was a __getattr__ method
> defined; code could then do 'if (obj->flags & GMAGICAL) ...'  instead
> of the more complicated 'if (PyObject_HasAttrString(obj,
> "__getattr__")'.

That looks like a reasonable sort of optimization to me, though
as far as i can tell it looks like that optimization has already
been done:

in PyClass_New(bases, dict, name):
    [...]
    op->cl_getattr = class_lookup(op, getattrstr, &dummy);
    [...]

in instance_getattr(inst, name):
    if (res == NULL && (func = inst->in_class->cl_getattr) != NULL) {
        [...special __getattr__ handling...]
    }

In general, optimizations of the form "add a flag to avoid a
frequent expensive test" seem okay to me, as long they are a
demonstrable win and the flag can be given a clear, simple name.


-- ?!ng

"To be human is to continually change.  Your desire to remain what
you are is what ultimately limits you."
    -- The Puppet Master, Ghost in the Shell