super, decorators and gettattribute

Richard Szopa ryszard.szopa at
Tue Jan 15 00:53:48 CET 2008

On Jan 14, 11:05 pm, thebjorn <BjornSteinarFjeldPetter... at>

> I don't remember if CLOS was changed to use C3 Linearization also, but
> the concept came from Dylan (
> linearization-oopsla96.html) and that's what is implemented in Python.

The Common Lisp ANSI standard is from 1994, and the article you cite
is from 1996, which strongly suggests C3 linearization wasn't included
in CLOS. The most important difference between CLOS and C3
linearization AFAIK is that the latter enforces monotonicity, while
the former doesn't.

Of course, it shouldn't be very difficult to implement the C3 behavior
in Common Lisp using the de facto standard MetaObject Protocol.

(Nb. Dylan was such a nice language... It's a pity it is practically
dead right now.)

> but if you're a language geek like me, you might be excited that in
> some cases it is
>   type(x).__dict__['y'].__get__(x, type(x))
> which says you get the value of x.y by calling y and passing x as an
> argument -- if you know CLOS you'll recognize that it's a primitive
> multi-method call. (there are some other special cases too, although
> not as exciting ;-)

Yeah, I also feel the excitement, so probably I am a language geek
too ;-). However, this is still quite far away from full fledged
multimethods. (OTOH trying to get something more from these primitive
multimethods by abusing __get__ looks kind of tempting ;-))


    -- Richard

More information about the Python-list mailing list