Stop writing classes...
I almost never write classes in Python. That may be a result of the fact that I never use Python for anything other than system automation and data post processing; I don't use Python to build complicated systems. What I have made use of are named tuples:<p><pre><code>  3DPoint = collections.namedtuple('3DPoint', ['x', 'y', 'z'])
  p1 = 3DPoint(3, 2, 4)
  p2 = 3DPoint(10, 1, 10)

  dist = math.sqrt((p2.x - p1.x)**2 + 
                   (p2.y - p1.y)**2 + 
                   (p2.z - p1.z)**2)
</code></pre>
I don't mean to say that classes aren't useful in Python, just that I've gotten a lot done in the language just depending on hashes, lists, tuples, named tuples, functions, comprehensions and generators. I've never felt the need to define a a class - the closest I came, I realized I wanted a named tuple. It certainly would make sense in the above example to define "dist" as a member function of a 3DPoint class, but it's just not how I write code in Python.<p>Contrast this with C++, where I define classes all the time. I think the reason for this discrepancy is that if you want to do anything interesting in C++, you almost have to define a struct or a class; that's where most of the abstractions happen. In fact, if I want functional style code in C++, I have to define my functions as classes. I think that Python's native tuple types, first-class functions and comprehensions make the difference.