Pythonのインスタンス属性への理解

スポンサーリンク

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()」を格納します。これでオブジェクトを作成するためのプロセスである「インスタンス化」が行われます。この時に、括弧内に引数,パラメータとして渡す値が指定されていない場合、既定値が割り当てられます。

作成したオブジェクトでクラス(設計図)内のコンストラクターを用いて定義したインスタンスの属性の値,プロパティにアクセスすると、既定値が出力されます。

 

コメント

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