Pythonic Abstract Base Class
Alex Martelli
aleax at aleax.it
Tue Oct 28 09:34:23 EST 2003
More information about the Python-list mailing list
Tue Oct 28 09:34:23 EST 2003
- Previous message (by thread): Pythonic Abstract Base Class / Interface
- Next message (by thread): Pythonic Abstract Base Class / Interface
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Tom Evans wrote: > My basic question: > If I have a specific interface which I know is going to be implemented > by a number of classes, but there is no implementation commonality > between them, what is the preferred form for this in Python? ... > Is there a clear pythonic way, or does it depend a bit more on the > design of the specific program? The normal Python approach is currently to just rely on signature-based polymorphism -- use inheritance to share implementation, but if you have no implementation to share, there's no real reason to inherit. Of course, people coming from languages where inheritance reigns will not accept that easily and refer to such issues as: -- in your 'interface class' you can implement the methods as raising NotImplementedError, which will be clearer than the AttributeError that happens upon trying to call the method on an instance of a class that's meant to implement the interface but forgot the method in question -- inheritance is ALMOST always centered on sharing implementation -- in the case of exception handling, though, inheritance trees do matter -- if you inherit you can typetest with isinstance rather than just featuretest with hasattr (to me, that's a DEFECT of inheritance:-) If you do have any useful features -- most often Template Method design patterns -- to share among (some of) your concrete classes, then by all means use inheritance for that. But, otherwise, I think that keeping documentation in comments and docstring, and using other language constructs (including inheritance0 for substantial purposes and not "just to document things", is a preferable approach. Alex
- Previous message (by thread): Pythonic Abstract Base Class / Interface
- Next message (by thread): Pythonic Abstract Base Class / Interface
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list