Python クラスメソッドを判別する

class Foo:
  @classmethod
  def clsMethod(self):
    pass
  def insMethod(self):
    pass

というコード。Foo.clsMethod がクラスメソッドになる。

  • type で判別
>>> type(Foo.clsMethod)
<type 'instancemethod'>
>>> type(Foo.insMethod)
<type 'instancemethod'>

無理。

  • isinstance, types で判別
>>> import types
>>> types.MethodType
<type 'instancemethod'>

無理。

  • 結論

無理。
命名規則を決めるかクラス定義時にデコレータなどで登録するのが正しいのかも。