Unconventional Uses of Python Objects
Join the DZone community and get the full member experience.
Join For FreeOne of the greatest features of Python is its flexibility. It allows for its objects (classes and instances of classes) to be used in a myriad of ways, many of which are not conventionally object-oriented. Chris Siebenmann has created a short list of ways that he uses Python's objects in this manner:
Chris points out that this is not a complete list, but rather a list of the ones he uses most often. Are there any other ways that you use Python objects that are unconventional? Please share them in the comments section below.
-- Chris Siebenmann
- Creating inheritance hierarchies for exceptions so I can have hierarchies of general and specific exceptions. I'm pretty sure that I'm usually over-designing when I do this and that I rarely need an actual hierarchy as opposed to one or two separate exceptions.
- As data records, ie the equivalent of C structs, in situations where just a list or a dictionary isn't enough. This 'bag of data' design pattern probably horrifies real OO people.
- For polymorphism, when I have generic operations to apply to a variety of underlying object types. Usually I don't use much or any inheritance for this, because in Python you don't need to use inheritance to get polymorphism; you can just duck type. (This is a superset of objects as data records.)
- For combining data and behavior together when it seems to make things simpler. My ideal is when all of the code that has to know about internal data storage details can be most conveniently put in one place (ie on the class), but I am willing to put methods on the side of a bag of data when it makes dealing with the data simpler. (Sometimes this involves polymorphism.)
Chris points out that this is not a complete list, but rather a list of the ones he uses most often. Are there any other ways that you use Python objects that are unconventional? Please share them in the comments section below.
Object (computer science)
Python (language)
Opinions expressed by DZone contributors are their own.
Comments