Dieter Maurer wrote:
Philipp von Weitershausen wrote at 2006-9-30 02:30 +0200:
But where does this type come from? Persistent classes are hard (hence
ZClasses cannot be maintained by anyone except a few people).
You want to stick this interface to individual objects,
while Lennart proposed to stick it to a type and use
some kind of inheritance to make it effective on all objects
instantiated from this type.
I remember that Jim proposed "PersistentModule"s, currently
a ZODB proposal, to implement functionality similar to ZClasses
in an easier way.
But, I cannot yet answer your question sincerely.
I can't either. If we ever get persistent code, that's nice, but I'd
still be skeptical. Frankly, I think it's yagni ("you ain't gonna need
it"). And if I understood Jim correctly, he nowadays prefers the "code
is on the filesystem and we evolve datastructures using generations"
story over "code and datastructures are persistent so that both can be
evolved at the same time".
I don't see how introducing another concept (a type) would be more
For me, Lennart's approach seems to be far more economic, as
he does things on an abstract (the type) level rather than
always work on the concrete (the individual object) level.
I find that the introduction of classes with (multiple) inheritance
has been very economic. It was another concept but a highly fruitful
one, despite the fact that they are not so liked in Zope3 land.
I think "fat" objects from mixing many different concerns into a single
implementation are a failed approach. Seeing how flexible you can be wit
a) separating concerns (functionality, responsibilities) into
separate objects called components and
b) making the lookup of these components pluggable (using registries
a.k.a. the Component Architecture),
I would not recommend anyone to over-use multiple inheritance as it's
been done in Zope 2. That is not to say that inheritance and even
multiple inheritance is evil. I think the right balance is necessary :)
Zope-Dev maillist - Zope-Dev@zope.org
** No cross posts or HTML encoding! **
(Related lists -