前の投稿 020 Pythonでクラスを作るで,クラス(オブジェクト)とインスタンスの関係を紹介しましたが,今回は,クラスのコンストラクタを定義する方法を紹介します.
まず,「クラスのコンストラクタとは何か」ですが,クラスをインスタンスとして実体化する際に,
funcgen = FuncGen()
としたことを覚えているでしょうか.
ここで,FuncGenクラスのインスタンスとして,funcgenを生成するための処理が,コンストラクタと呼ばれる関数です.
このコンストラクタと呼ばれる関数は,__init__という特別な関数名(initの前後に2個のアンダーバー)を持ちます.関数名からして,極めて重要な関数であることが分かります.
コンストラクタの役割は,
- クラスのインスタンスを作成する
- インスタンスの初期設定(初期値の設定など)を行う
ことが挙げられます.但し,2の初期設定を全く行わない場合は,コンストラクタの定義は省略しても良いことになっています.
今回は,VISAリソース名を初期値として設定する,ファンクション・ジェネレータを表すFuncGenクラスのコンストラクタを定義することにします.
VISAリソース名というのは,測定機器を識別するための文字列で,それぞれの測定機器で固有の文字列です.また,同じ測定機器でも,接続方法(USB, GPIB, Etherなど)によって異なる文字列となります.
測定機器のVISAリソース名が"VISARESOURCE"という文字列だとして,FuncGenクラスのコンストラクタは,下記のようになります(クラスおよび関数の定義,関数の実装部が,それぞれインデントを付けることに注意).
class FuncGen:
def __init__(self):
self.visaresource = "VISARESOURCE"
あれれ,コンストラクタ関数 __init__ には,見慣れない引数selfがあり,VISAリソース名"VISARESOURCE"は,self.visaresourceに代入されています.
コンストラクタは,クラスに属する関数なのですが,Pythonでクラスに属する関数(メンバ関数ともメソッドとも呼ばれます.本ブログでは,他のプログラミング言語と同じく,メンバ関数と呼ぶことにします)は,この引数 self を使って定義していくことになります.
長くなってきたので,引数 self を使ったメンバ関数の定義に関しては,次の投稿で紹介します.
0 件のコメント:
コメントを投稿