[Zope-dev] Zpydoc

Terry Hancock hancock@anansispaceworks.com
Thu, 5 Jun 2003 05:26:22 -0700


On Wednesday 04 June 2003 07:16 pm, alan milligan wrote:
> Personally, I am a bit sceptical about the whole Interface concept.  
> Fortunately because Python supports multiple inheritance, it's not like the 
> Java mechanism.  But it strikes me as being much too like the concept of a 
> pure abstract base class in C++. But the reality is that this almost never 
> happens, and it always seems like a good idea to start using this class for 
> common methods.  I do not have a problem with this and think that just 
> declaring a function gives you little benefit when you could provide a 
> definition as well - even a 'raise AssertionError, 'Implement me!'  seems 
> more useful :)

I think it depends on what they are used for.  In my situation, I am
defining objects that future 3rd party developers will likely have to
subclass. But what methods and attributes do I promise to keep,
and which do I plan to alter at need?  Also, the interface concept
allows me to specify what an object *behaves like* -- not what it
*is*.  Right now if I subclass from Folder, it isn't easy for me to tell this
with introspection -- I have to *know* that a "Topic" is just an extended
Zope folder.  Interfaces will allow me to simply say that "Topic implements
a Folder interface".  Then it's easy to tell whether I can call certain
methods on it.  The "metatype" concept just isn't good enough for
this, and inspecting __bases__ is too complicated.  Anyway, what
if I *don't* subclass from Folder?  Maybe I just implement all the same
methods.  Interfaces lets me just say what it does in an unambiguous
way.  And since it's in the code, and there is a mechanism for checking
that the interface is implemented (in fact I'm thinking of building
in such a check into my installation process), this is a nice arrangement.

The thing to realize is that interfaces are self-checking documentation,
not code.

Well, so far, they seem really nice, anway.

Cheers,
Terry

--
Terry Hancock ( hancock at anansispaceworks.com )
Anansi Spaceworks  http://www.anansispaceworks.com