Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Unconventional Uses of Python Objects

DZone's Guide to

Unconventional Uses of Python Objects

· Web Dev Zone
Free Resource

Learn how to build modern digital experience apps with Crafter CMS. Download this eBook now. Brought to you in partnership with Crafter Software

One 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:

  • 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 Siebenmann

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.

Crafter is a modern CMS platform for building modern websites and content-rich digital experiences. Download this eBook now. Brought to you in partnership with Crafter Software.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}