[Python-Dev] type categories
Guido van Rossum
Fri, 13 Sep 2002 00:37:57 -0400
> > Why do keep arguing for inheritance? (a) the need to deny inheritance
> > from an interface, while essential, is relatively rare IMO, and in
> > *most* cases the inheritance rules work just fine; (b) having two
> > separate but similar mechanisms makes the language larger.
> > For example, if we ever are going to add argument type declarations to
> > Python, it will probably look like this:
> > def foo(a: classA, b: classB):
> > ...body...
> I'm curious, and I don't recall having seen anything about this: why
> wouldn't we simply use attributes to hold this information, like
> __slots__? After all, attributes get inherited, too, and there's no
> need to pretzel the syntax. Using attributes IMO would make it easier
> to handle the case where derived classes need to mangle type and
> interface declarations.
That's exactly what Zope does with the __inherits__ attribute.
But it's got limitations: there's only one __inherits__ attribute, so
it isn't automatically merged properly on multiple inheritance, and
adding one new interface to it means you have to copy or reference the
base class __inherits__ attribute.
Also, __slots__ is provisional. The plan is for this to eventually
get nicer syntax (when I get over my fear of adding new keywords :-).
--Guido van Rossum (home page: http://www.python.org/~guido/)