Interfaces (a la PEP 245 and Zope)
Heiko Wundram
heikowu at ceosg.de
Fri Aug 1 06:53:16 EDT 2003
Hey Terry!
Simplest way I use to implement "interfaces":
class IEditor(object):
def getSelection(self,start,end):
raise NotImplementedError("Implement this for IEditor")
# Other mandatory functions.
# ...
class Editor(IEditor):
# Implementation of getSelection overrides "virtual" base.
# ...
Checking whether a class "implements" an interface can be done with
issubclass(Editor,IEditor) or isinstance(editinst,IEditor).
This doesn't do rigid checking of an interface, but seems to suit most
of my needs. If you devise a test-suite for your program, you'll catch
the NotImplementedError inevitably when you run the code.
I don't really know what __implements__ does aditionally in Zope, as
I've never programmed for/with it, but I'd consider the above paradigm,
it's much simpler and "just works", without extra modules.
HTH!
Heiko W.
More information about the Python-list
mailing list