クラスメソッド、スタティックメソッド

クラスメソッドとスタティックメソッドの書き方

class X:
  def foo(cls):
    print 'foo'
  def bar():
    print 'bar'
  foo = classmethod(foo)
  bar = staticmethod(bar)

X.foo()
X.bar()

クラスメソッドはRubyと同じく普通にクラスメソッドで、第一引数にはselfの代わりにクラスオブジェクトが渡される。上の例だとclsはX。
スタティックメソッドはC++のstatic関数に近い。インスタンスともクラスとも関係なくただクラスに入っている関数だと思えばいい。
後で説明するデコレータを使うともっと分かりやすく書ける。