[Zope] Which part of Zope cares about interfaces in Products?

Hideo at Yokohama hideo.at.yokohama at gmail.com
Tue Nov 8 10:26:44 EST 2005


Hi.

I'm trying to learn how to code Plone products using Archetypes, but to  
get a sound
understanding, I'm going through layer by layer, starting from Zope  
products
written in Python.  I have been trying Plone for about 6 months.  My  
Python experience
is very limited.

In Zope Developer's guide at zope.org, it says that when you make products  
you
should define the interface of your product and make the implementation  
class
implement that interface.  I understand that this "interface" is not a  
built in
feature of Python, but a convention introduced by Zope.  By following the  
convention,
you get some introspection capabilities that is provided by Zope libraries.

 From my experience with OOP in Java and C++, using interfaces makes sense  
only when
some code knows that interface and codes against it, or some introspection  
based
tool (typically a GUI builder or RMI/CORBA-ish tool) will study your  
interface and
do something based on that knowledge.

What is not clear to me is the effect of declaring the interface of Zope  
products.
How does Zope care about it?  In "The definitive guide to Plone", the  
product
example does not define it's own interface, but does assert that it  
implements
some interfaces that are defined by the framework.  So it seems that it is  
not
necessary to define the inteface of your product to make it work, but  
still meaningful
to assert that it implements some well-known interfaces.

The Zope Developer's guide does not actually say that you must define  
interfaces
to make your product work. It just says that doing so will make it easier  
for
other people to understand your products.  If that is the sole effect of  
using
interfaces,  it is just for documentation, then.  Am I right?


-- 
Hideo writing from Yokohama Japan.



More information about the Zope mailing list