Pythonの保護されたメンバー(Protected Members)

スポンサーリンク

Pythonの保護されたメンバー(Protected Members)について解説しています。

Pythonでは、オブジェクトを作成するためのテンプレート(設計図)であるクラスで、保護されたメンバー(Protected Members)を定義できます。これは、クラス内からアクセスでき、その子クラス(サブクラス、または派生クラスとも呼ばれる別のクラスから継承するクラス)からも利用できます。利用できますが、他の環境からのアクセスは許可されていない。

なお、基本的に、データ型(int, char, floatなど)や派生データ型(classなど)を用いてクラスで宣言された変数は、データメンバーと呼ぶ。また、パブリック(公開されている)または、プライベートのいずれかで宣言されている関数は、メンバー関数と呼ぶ。

■Python

今回は、Google Colaboratoryを用います。Google ColaboratoryのPythonのバージョンは、記事作成時点では「3.7.13」となっています。

■保護されたインスタンス変数を定義する

今回は、保護されたインスタンス変数を実際に定義してみます。保護されたインスタンス変数を定義する際は、単一のアンダースコア ‘_’記号を用います。これでクラス内のデータメンバーのアクセス制御が決定されます。アンダースコアで始まるインスタンス変数を含むメンバーは、関数、データメンバーのいずれであっても、非公開部分として扱われる。

■コード

class human: #クラスの定義
  _attribute = "日本人" #保護されたデータ メンバー(保護されたインスタンス変数)
  _name = "田中" #保護されたデータ メンバー(保護されたインスタンス変数)

  def display_test(self): #公開されたメンバー関数
    print("属性: ", self._attribute) 
    print("名前: ", self._name) 

object_test = human()
object_test.display_test()

今回はまずオブジェクトを作成するためのテンプレート(設計図)であるクラスでhumanというクラスを定義する。定義後、単一のアンダースコア ‘_’記号を用いて、_attribute変数と、_name変数の2つを定義する。これは保護されたインスタンス変数(保護されたデータ メンバー)である。

保護されたインスタンス変数を定義後、def文を用いてdisplay_testという関数を定義する。括弧内には、特別な引数,パラメーターであり、オブジェクト自体を参照するために、self(自己)を記述します。記述後、関数が呼び出されたときに実行される処理を記述する。今回の処理としては、self(自己)に対してドット(.)演算子を用いて、定義した保護されたインスタンス変数(保護されたデータ メンバー)にアクセスし、print()で変数内の情報を出力させるというものです。

関数を定義後、object_testという変数を定義し、その中に「Child()」を格納します。これでオブジェクトを作成するためのプロセスである「インスタンス化」が行われました。

インスタンス化を行った後に、オブジェクトに対してドット(.)演算子を用いて、クラスのdisplay_test()を呼び出してみます。

■検証・実行

コードを記述後、セルを保存し、Google Colaboratory上でセルを実行してみます。

実行してみると、作成したオブジェクトから、定義した2つの保護されたインスタンス変数(保護されたデータ メンバー)に、保護されているが、アクセスすることができることがわかった。

コメント

タイトルとURLをコピーしました