pythonでClassにメソッドを作成する際に「クラスメソッド」として作成する方法と「インスタンスメソッド」として作成する方法があります。

どちらも第一引数に自分自身を定義するのは同じですが(クラスメソッド:cls インスタンスメソッド:self)、インスタンスメソッドはインスタンスが作成されるたびに別の領域が確保され、インスタンス変数の情報を格納する領域も別に確保されます。 クラスメソッドはそのクラスそのものが持つメソッドなので、複数使用個使用することは出来ません。

また、インスタンスメソッドはクラス変数にアクセスできますが、インスタンス変数はインスタンスメソッドしかアクセスすることは出来ません。

基本的な用途においてはどちらも同じように使用できますが、変数のスコープは判りにくいバグの原因になりやすいので、明確な意思を持って使い分けた方が良いです。

 

  • Facebook
  • twitter
  • Hatena