== What shouldn't be a method function I dislike excessive religion, so I don't hold to the view that everything should be a method function. Fortunately, Python lets me indulge this view. My rule of thumb is that any method function that doesn't use its _self_ argument to get at things gets made into a normal module level function. This reduces clutter on the class (and in the source code) and makes what's really going on clear to me and any later readers. Of course there are some exceptions, such as: * the function is only sometimes _self_-less; some implementations have to use _self_. * the function varies on a per-class basis. This is a good case for StaticMethodUse. * the function is a generic interface to multiple classes of objects, especially when they're spread out over multiple modules. For me, most of the functions that wind up being de-method-ized this way are internal helper functions. If a bunch of public interface functions turn out to not use _self_, it's usually because my design of the object's interface is bad.