広告スペース(バナー)
🐍Python レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向8▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 56 / 69
クラス変数と@staticmethodの基本
このレッスンでは、クラス変数と@staticmethodの使い方を学び、インスタンスではなくクラス全体で共有するデータを扱えるようになることを目標にします。「Python staticmethod 使い方」で調べている方向けです。
クラスの中で__init__の外に書いた変数は「クラス変数」と呼ばれ、すべてのインスタンスで共有されます。@staticmethodを付けたメソッドは、インスタンスを作らなくても呼び出せる処理になります。newでインスタンスを作らなくても、クラス名.メソッド名()で直接呼び出せる点が通常のメソッドとの大きな違いです。
サンプルコードでは、Counterクラスにcount = 0という共有のカウンターと、@staticmethodを付けたincrement()という共有の処理を定義しています。Counter.increment()を呼び出すたびにCounter.countが増えていく様子から、インスタンスを作らずにクラス自体が状態を持てることを確認してみましょう。
初心者がよくつまずくのが、通常のメソッドとstaticmethodを混同してしまうことです。通常のメソッドは第1引数にselfが必要ですが、staticmethodには不要です。@classmethodというよく似たデコレータもあり、クラス自身を引数として受け取りたい場合に使い分けます。
インスタンスごとに異なる値と、クラス全体で共有する値の違いを意識できるようになると、より複雑なクラス設計にも対応できるようになります。設定値の管理やインスタンス数のカウントなど、実務でも活用される考え方です。
Python
OUTPUT / 実行結果
💡 初回実行時はPythonエンジンの読み込みに数秒かかります。
🎯
ここまでできればゴール達成!
これまで作成したインスタンスの数を数える仕組みが作れるようになります。
これまで作成したインスタンスの数を数える仕組みが作れるようになります。
広告スペース(バナー)
広告スペース(記事内)