[Python-Dev] Afterthoughts: PEP 252, PEP 253 and jython issues
Guido van Rossum
guido@python.org
Fri, 24 Aug 2001 10:52:28 -0400
> Yes, I'm thinking furiously.
See if I can keep up with you. :-)
> GvR > A safe rule would be to require that all Python classes in a
> GvR > given inheritance graph should derive from the same C/Java class. I
>
> > That would mean that all C/Java behaviour is always only at the top
> > of the mro, right?
> >
> > I had the same idea because this would make my life easier.
> >
> > A problem: some of the Zope porters reported that there are classes
> > that inherits from more than a single ExtensionClass in Zope :-(
> > don't know if that is true. (**)
> Oops, this is already a problem with the actual best_base rule,
> I don't know if my reinterpretation is OK, but doesn't it
> basically states that all C types subclassed by a new C level class
> should be in a subtyping relationship that means:
>
> with
> A isa list isa object
> B isa special_list isa list isa object
> C isa object
>
> class D(A,B,C): ... is OK
>
> but with
>
> Z isa Cbadboy isa object
>
> then class D(Z,A) isn't allowed.
Correct. You can't multiply inherit from two types that have a
different structure layout. The C code must be able to safely cast a
PyObject* to a PyListObject* or a Cbadboy* and if those don't have the
same structure it's not safe. The implementation restricts this
pretty effectively I believe. (You can't multiply inherit from list
and dictionary, but you can from list and xxsubtype.spamlist.)
> but if that is already *not* *a* *problem* then I think the rule could
> be not that bad ...
What do you mean by "already *not* *a* *problem*"? I hope "it is
already forbidden". And "the rule" refers back to my proposal quoted
above with "GvR >", right?
--Guido van Rossum (home page: http://www.python.org/~guido/)