Kent Johnson wrote: >Alex Hunsley wrote: > > >>Interfaces and abstract classes - I know they don't exist per se in >>Python. But what are the closest analogues? I've found a few examples, >>e.g. for an abstract class the following page has a fairly common >>suggestion: >> >>http://www.norvig.com/python-iaq.html >> >> > >Interfaces are generally implicit in Python. For example the docs will >sometimes talk about 'file-like objects' which are just objects that implement >the same interface as a file object. 'iterable', 'iterator', 'sequence' and >'mapping' are similarly defined by convention or by explicit documentation but >not in the language itself. For example the 'iterator protocol' is defined >here: >http://docs.python.org/lib/typeiter.html > > Yup, I've run into the __getitem__ etc. methods that you can overload which is pretty handy stuff.
>To define an abstract method I just raise NotImplementedError in the body of >the method. > > Ah, ok. This appears to be the pythonic way. >There are a couple of more formalized ways to add support for explicit type >requirments to the language. This is a little different from what you asked - >these projects allow a client of an object to specify an interface (or >protocol) that must be supported by the object. >PyProtocols http://peak.telecommunity.com/PyProtocols.html >Zope Interfaces http://www.zope.org/Wikis/Interfaces/FrontPage > > I've had a look at these before and although they look relevant, I'm more interested in the core python language at the moment, and what that can do itself. >PEP 246 formalizes this notion. It seems to be slated for inclusion in Python >2.5. >http://www.python.org/peps/pep-0246.html > > This PEP looks like a good idea! thanks alex >Kent > > > _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
