Pythonのインスタンス属性について解説しています。
インスタンス属性(Instance attributes)は、オブジェクトを作成するためのテンプレート(設計図)であるクラスのインスタンスに付属している属性(変数)、またプロパティ(詳細なデータ)です。なお、オブジェクトを作成するプロセスは「インスタンス化」と呼ばれる。
■Python
今回は、Google Colaboratoryを用います。Google ColaboratoryのPythonのバージョンは、記事作成時点では「3.7.13」となっています。
■コンストラクターでインスタンス属性を定義する
では、実際にコンストラクター(Constructor)でインスタンス属性を定義してみます。
■コード
class fruits: fruitsname = 'フルーツの名前' #クラス属性 def __init__(self): #コンストラクター self.name = 'いちご' #インスタンス属性 self.agespeed = '成長速度20日' #インスタンス属性
fruits(フルーツ)というクラス(設計図)という定義します。定義後、コンストラクター(Constructor)を定義するために、def文と特別な名前である「__init__()」を記述します。さらに括弧内には、特別な引数,パラメーターであるselfを記述します。
記述後、インスタンス属性を定義します。今回は「name」と「agespeed」の2つを定義します。定義後、”=(イコール)”を用いて属性の値,プロパティを格納します。
なお、今回は、コンストラクターでインスタンス属性を定義した外に、別でクラス(設計図)のfruitsnameという属性を定義しています。定義後、”=(イコール)”を用いて属性の値,プロパティを格納します。
■検証・実行
格納後、オブジェクトを作成し、定義したインスタンス属性にはアクセスしてみます。
■コード
class fruits: fruitsname = 'フルーツの名前' #クラス属性 def __init__(self): #コンストラクター self.name = 'いちご' #インスタンス属性 self.agespeed = '成長速度20日' #インスタンス属性 f_object = fruits() f_object.name f_object.agespeed
定義したインスタンス属性にアクセスするために、f_objectという変数を定義し、その中に「fruits()」を格納します。これでオブジェクトを作成するためのプロセスである「インスタンス化」が行われました。
格納後、ドット演算子( . )を用いて、インスタンス属性にアクセスします。
今回作成したオブジェクトは、クラス(設計図)内でコンストラクターを用いて定義したインスタンスの属性を共有していますので、そちらへアクセスし、値,プロパティを出力させることができました。
■オブジェクトを作成し、属性の値,プロパティを設定する
f_objectという変数を定義し、その中に「fruits()」を格納します。これでオブジェクトを作成するためのプロセスである「インスタンス化」が行われましたが、作成したオブジェクトの属性の値,プロパティを設定、変更することができます。
■コンストラクターを用いてインスタンス属性の値を指定する
■コード
class fruits: fruitsname = 'フルーツの名前' #クラス属性 def __init__(self,name,agespeed): #コンストラクター self.name = name #インスタンス属性 self.agespeed = agespeed #インスタンス属性
またコンストラクターを定義する際に、self(自己)の引数,パラメーター以外に、今回はname引数,パラメーターとagespeed引数,パラメーターを設定します。引数,パラメータとして渡された値は、インスタンス属性の値,プロパティに格納されます。
格納後、f_objectという変数を定義し、その中に「fruits()」を格納します。これでオブジェクトを作成するためのプロセスである「インスタンス化」が行われますが、この時に括弧内にインスタンス属性の値,プロパティとなる値の受け渡しを行います。
そうすると、クラス(設計図)内でコンストラクターを用いて定義したインスタンスの属性を共有していますので、そちらへアクセスし、値,プロパティを出力させることができます。
■インスタンス属性のデフォルト値,プロパティの設定
さらにクラス(設計図)内でコンストラクターを定義する際に、括弧内の引数,パラメータの既定値を設定することができます。
設定後、f_objectという変数を定義し、その中に「fruits()」を格納します。これでオブジェクトを作成するためのプロセスである「インスタンス化」が行われます。この時に、括弧内に引数,パラメータとして渡す値が指定されていない場合、既定値が割り当てられます。
作成したオブジェクトでクラス(設計図)内のコンストラクターを用いて定義したインスタンスの属性の値,プロパティにアクセスすると、既定値が出力されます。
コメント