It's something I've been learning too.  They're a little harder to write, but much more flexible to use (since they don't require an instance to be created).  A good clue to use <code>@staticmethod</code> is if your code only uses <code>self</code> in a few places and you can remove that requirement easily. You can do it with data as well if you don't want to use globals.  Inside your instances, just reference <code>self.__class__.staticdata</code> and it'll always find the right one (even if data is in an ancestor class).