Pythonの__init__メソッドでインスタンスオブジェクトを作成・初期化する方法
Pythonでは、クラスオブジェクトを呼び出す(インスタンス化する)操作を行うと、まず空のオブジェクトが生成されます。しかし多くの場合、開発者は特定の初期状態を持つインスタンスを作成したいと考えます。そこで活躍するのが、__init__() という特別なメソッドです。
__init__メソッドの基本形
__init__() メソッドは、クラス内で以下のように定義します。
def __init__(self):
self.data = []
第一引数の self は、生成されたインスタンス自身を指します。この例では、インスタンス変数 data に空のリストを代入することで、オブジェクトを初期化しています。
インスタンス化時に自動的に呼び出される仕組み
クラスに __init__() メソッドが定義されている場合、クラスのインスタンス化が行われると、新しく作成されたインスタンスに対して自動的に __init__() が呼び出されます。インスタンスは次のように取得します。
x = MyClass()
この一行を実行すると、Pythonが内部で空のオブジェクトを生成し、直ちに __init__() を実行して初期化処理を行ってくれます。開発者が明示的に __init__() を呼び出す必要はありません。
引数を受け取る__init__メソッド
__init__() メソッドには引数を持たせることも可能です。その場合、クラスのインスタンス化演算子に渡された引数が、そのまま __init__() へと引き継がれます。例えば、複素数を表すクラスは次のように実装できます。
>>> class Complex: ... def __init__(self, realpart, imagpart): ... self.r = realpart ... self.i = imagpart ... >>> x = Complex(4.0, -6.5) >>> x.r, x.i (4.0, -6.5)
この例では、Complex(4.0, -6.5) とすることでインスタンスを生成しています。渡された実部 4.0 と虚部 -6.5 が、それぞれインスタンス変数 r と i に代入され、初期化済みの状態でオブジェクトが利用できるようになります。
まとめ
- クラスのインスタンス化では、まず空のオブジェクトが生成される
__init__()を定義すると、インスタンス化のタイミングで自動的に初期化処理が実行される__init__()に引数を設定すれば、インスタンス生成時に任意の値を渡して柔軟に初期化できる
__init__() はPythonのオブジェクト指向プログラミングにおける最も重要な概念の一つです。初期状態を適切に設計することで、安全で扱いやすいクラスを作成できます。
-
PythonのMatplotlibでヒストグラムを作成する方法をわかりやすく解説
Matplotlibは、データ可視化のために広く使われている人気のPythonライブラリです。データの可視化は非常に重要なステップです。数値を一つずつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるからです。また、定量的な洞察を効果的に伝える手段としても優れています。MatplotlibとはMatplotlibは、データをもとに2次元のプロット(グラフ)を作成するためのライブラリです。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも簡単に行えます。IPythonシェル、Jupyter Noteboo
-
Pythonとtkinterでストップウォッチを作成する方法【サンプルコード付き】
ストップウォッチは、ある出来事から次の出来事までの時間間隔を測定するための道具で、一般的に数秒〜数分程度の計測に使用されます。スポーツのタイム計測をはじめ、産業現場で熱流量や電流の変化を測るなど、幅広い場面で活用されています。 Pythonでは標準ライブラリのtkinterを使えば、GUIを備えたストップウォッチを簡単に自作できます。本記事で紹介するのは、スタート(Start)・ストップ(Stop)・リセット(Reset)の3つの操作ボタンを備えたウィンドウアプリケーションです。 ポイントは「after()」メソッド このプログラムの核となるのが、tkinterのウィジェットが持つafter