Martin Aspeli wrote:
Chris Withers wrote:
I find myself often having to define pure marker interfaces for each
class that I define, purely so I can register adapters for objects of
Why does your class not have a (non-marker) interface in the first place?
The use of interfaces as documentation and as formalisms for expressing a
class' functionality (in adapters, utilities etc) is one of the benefits
that Zope 3 introduces. I can see how they may not always add that much
value immediately, but they are a good way of ensuring things are reasonably
well-defined, well-documented and easily locatable. I'd rather start from
interface design and implement as necessary, than think of interfaces as
necessary evils of the CA, personally.
Oh, I disagree. It's much nicer to be able to be able to start with
adapting classes, and introduce interfaces later, where necessary. Often
they're not. In fact it's already possible to adapt classes and register
views for classes. In ZCML I believe there's some limitations with one
directive or other (a bug), at least there was, but the component
architecture has allowed this for a long time. We've been very happily
using this in grok.
C++ also encourages/enforced the writing of a .h file describing the
interface for all classes. I then learned Python and was much happier.
Zope 3 should allow for the Pythonic pattern of development.
Zope3-dev mailing list