[Python-3000] PEP for Metaclasses in Python 3000

Josiah Carlson jcarlson at uci.edu
Sat Mar 10 09:55:00 CET 2007


Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> 
> Jack Diederich wrote:
> 
> > I am a very big fan of ordered dicts in classes.  One possibility is that
> > suites in classes always store their order in a special dict that keeps a 
> > side list of key order.  A final invisible class decorator around
> > every class would then toss out the order and leave only a regular dict.
> 
> Is it really necessary to toss out the order at all?
> I'm skeptical that class dictionaries are either created
> or modified anywhere near often enough for there to
> be any noticeable performance penalty here.

I agree.  Very few classes have significantly more than a few hundred
assignments or accesses during class body execution.  I don't think
speed is going to matter enough for us to care.

[snip]
> The tuple can be a constant of the code object, so the
> only overhead is one extra item added to the dict at
> class creation time, and none at all for subsequent
> access to the class dict. And you don't even need a
> special kind of dict.

Strawman:

    class foo:
        if ...:
            a = 1
            b = 2
        else:
            b = 1
            a = 2
        c = 3

Which is first, a or b?  What if ... is runtime-dependent?

Also, depending on the use, one may want to know the order in a 'move to
end' fashion (if a is assigned to multiple times, it ends up in the
ordering as if only the last assignment was done).

 - Josiah



More information about the Python-3000 mailing list