Really stupid question regarding PEP 252 and type/class unification
Russell Turpin
russell_turpin at hotmail.com
Thu Aug 30 18:57:43 EDT 2001
Guido van Rossum <guido at python.org> wrote in message news:<cp3d6ap71x.fsf at cj20424-a.reston1.va.home.com>...
> Indeed, you can't subclass from multiple built-in types. But
> you can subclass from multiple user-defined classes that derive
> from the same built-in type. ..
>
> The complete rule that explains what combinations are cool is
> a bit complex, but a simplified version is easy enough to
> remember: you can multiply inherit from user-defined new-style
> classes as long as they all derive from the same built-in type,
> or from object.
OK, I think I'm grokking it. In future Python, every derived
type will descend from some ur-type, either one of the
built-in types such as "list" or "dictionary," or "object,"
which is the ur-type for classes. Multiple inheritance is
allowed only within the ur-type, i.e., when all base types
have the same ur-type.
Two things occur to me. (1) The language is awkward. I want
a word for the union of Python types and classes. Above, I
use "data type," but that brings the obvious ambiguity. The
unification PEP might be an opportune time for some
rationalization of the language. (2) If I have grokked the
future data model correctly, it seems to me that "Object"
should be made a built-in type that follows all the same
rules as the other built-in types, distinguished primarily
as being the default base type when no other is listed. In
particular, I should be able to create instances without
first sub-classing:
spam = Object() # Create new instance
spam.eggs = "Yes"
That would be neat.
Still .. I'm puzzled as to how subtyping affects mutability
and identity. If I subtype int, is the result immutable?
What does that mean if I can assign attribute values? I
haven't thought about this much, so I apologize if my
comments are headed in the wrong direction.
Russell
More information about the Python-list
mailing list