Really stupid question regarding PEP 252 and type/class unification

Russell Turpin russell_turpin at
Fri Aug 24 03:11:54 CEST 2001

Neil Schemenauer <nas at> wrote in message news:<mailman.998582617.17836.python-list at>...
> The object "lst" does not have some hidden attribute that 
> is a list. It really is itself a list object.  That's the 
> way things are implemented. Using some other mental model 
> is bound to get you into trouble sooner or later.

This gets to the nub of the matter. Let's take your example:

    class MyList(list):

    lst = MyList()

So "lst" is really a list. But it also is really an object,
instantiated from a class. So one can do things like:

    lst.a = "I just created attribute 'a'."
    lst.b = []

This is correct, right? Or is the idea that we will have two
species of classes, "types," which don't allow statements like
the above, and "true classes" which do? Anyway, assuming my
extension to the example is allowed, it now looks to me that
"lst" is (has been promoted to?) an object with three 

    x.a == "I just created attribute 'a'."
    x.b == []
    x == []           # The default attribute

There is something that bothers me about this, but with my
sore forehead, I am unable to articulate it. Of course, I'm
even more distressed if it turns out that assigning attributes
to lst is not allowed, since this violates what I know about 
how "class" works. (And since we can now assign attributes 
even to lowly functions, why not to a type-derived class??)
If the intended model is the "two classes of class," can they 
be mixed in multiple inheritance?

    class Centaur(SomeTrueClass, MyList):

Will this generate an error? Or what about:

    class Mosaic(SomeTrueClass, dictionary):

And if I can't mix true classes with types, can I mix types?

    class Confused(dictionary, int):

    spegg = Confused()

Is "spegg" really a dictionary? Really an int? Really an 
object? Or is all of this disallowed, and we now have some 
fairly complex rules about how you may or may not use two 
classes of class? 

Oh, my poor forehead!


More information about the Python-list mailing list