Interface support?

Michael Spencer mahs at telcopartners.com
Fri Mar 18 07:30:30 CET 2005


Steve wrote:
> Is it possible to design interfaces that classes must implement in 
> Python? 

There are some well-known 'independent' implementations of interfaces:
     Zope Interfaces :http://www.zope.org/Wikis/Interfaces/FrontPage
		-  a separable component of the much larger app server
     Twisted Interfaces: see http://twistedmatrix.com/

     PyProtocols: http://peak.telecommunity.com/PyProtocols.html, whose 
         author is one of the protagonists in the PEP246 saga


There are also several possible light-weight roll-your-own solutions
One common idiom is an abstract base class:

class SomeInterface(object):
    def someMethod(self, argspec):
         # Should never get here, because the implementation overrides this method
	raise NotImplmentedError

but the compiler doesn't pay any special attention to these classes so failure 
to implement the interface is detected at runtime

If it's not, is this functionality planned at all for the future?
> 
Python Enhancement Proposals 245, and 246 http://www.python.org/peps/ discuss an 
interface syntax and the related topic of object adaptation.  These are both 
current discussions among the Python developers with no decision on whether/when 
  to introduce either as far as I know.  Observer the fray at: 
http://mail.python.org/pipermail/python-dev/


Guido Van Rossum (Python creator and BDFL) recently blogged about "Optional 
Static Type Checking" http://www.artima.com/weblogs/viewpost.jsp?thread=89161
as part of long-range planning for a future Python 3000 (some years in the future)

HTH

Michael




More information about the Python-list mailing list