021 Pythonでクラスのコンストラクタを定義する

2022/03/28

紹介/オブジェクト指向

t f B! P L

前の投稿 020 Pythonでクラスを作るで,クラス(オブジェクト)とインスタンスの関係を紹介しましたが,今回は,クラスコンストラクタを定義する方法を紹介します.

まず,「クラスのコンストラクタとは何か」ですが,クラスインスタンスとして実体化する際に,
    funcgen = FuncGen()
としたことを覚えているでしょうか.

ここで,FuncGenクラスインスタンスとして,funcgenを生成するための処理が,コンストラクタと呼ばれる関数です.
このコンストラクタと呼ばれる関数は,__init__という特別な関数名(initの前後に2個のアンダーバー)を持ちます.関数名からして,極めて重要な関数であることが分かります.

コンストラクタの役割は,

  1. クラスのインスタンスを作成する
  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 を使ったメンバ関数の定義に関しては,次の投稿で紹介します.


このブログを検索

自己紹介

C++やC#を使って数値解析プログラムの開発を長年行ってきました.
今は,Pythonを使った自動処理システムの開発をメインに行っています.

QooQ