このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】データ属性からオブジェクトに値を保存する

データ属性からオブジェクトに値を保存する

 オブジェクト指向プログラミングにおいて、データ属性は各インスタンスに固有の情報を保存するための重要な仕組みです。オブジェクトに対して、後から動的に属性を追加したり、既存の属性の値を変更することが可能です。
 ここでは、データ属性の基本的な利用方法と、実際のプログラム例を通してどのようにオブジェクトに値を保存するのかを、表や具体例を用いて解説していきます。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.データ属性の基本概念

1.1. データ属性の参照方法

オブジェクトに保存された値(データ属性)は、以下のような記法で参照できます。

オブジェクト.属性名

 たとえば、あるオブジェクト objcolor という属性が保存されている場合、obj.color と書くことで、その値にアクセスすることができます。

1.2. データ属性の追加と更新

 既存のオブジェクトに対して新たな属性を追加したり、既存の属性の値を変更する際は、次のように記述します。

オブジェクト.属性名 = 値

 この記法では、右辺に任意の式を記述できるため、計算結果や他の変数の値を利用することも可能です。以下の表は、データ属性の参照と更新の基本的な操作をまとめたものです。

操作記述方法説明
参照オブジェクト.属性名オブジェクトに保存されている値を取得する。
追加/更新オブジェクト.属性名 = 値新たな属性を追加するか、既存の属性の値を変更する。

2.実践例:Gadget クラスを用いたデータ属性の利用

2.1. Gadget クラスの定義とインスタンス生成

 ここでは、電子機器を表現するための空のクラス Gadget を定義し、そこに各オブジェクト固有の情報を保存する例を紹介します。まずは、以下のように Gadget クラスを定義します。なお、クラス内に何も記述しない場合は、pass 文を使って空のクラスとして定義します。

class Gadget:
    # Gadgetクラスは、電子機器を表すための空の設計図です。
    # 現段階では属性やメソッドは定義していません。
    pass

 次に、このクラスからインスタンスを生成し、変数に保存します。ここでは dev1 という変数に、最初のGadgetオブジェクトを代入します。

2.2. データ属性への値の代入と表示

 生成したオブジェクト dev1 に対して、データ属性を追加して値を保存します。ここでは、model(機種名)と cost(価格)の2つの属性を設定し、その内容を表示するプログラム例を示します。

# Gadgetクラスからオブジェクトを生成し、変数dev1に保存する
dev1 = Gadget()

# dev1オブジェクトに対して、データ属性modelとcostを追加(または更新)する
dev1.model = "Smartwatch"  # 機種名として"Smartwatch"を代入
dev1.cost = 299            # 価格として299を代入

# 保存されたデータ属性の値を表示する
print(dev1.model, dev1.cost)  # 出力結果: Smartwatch 299

実行結果

Smartwatch 299

 このコードでは、まず dev1 という変数に Gadget クラスのインスタンスを生成し代入します。続いて、dev1.model に文字列 "Smartwatch" を、dev1.cost に数値 299 を代入しています。最後に print 関数を用いて、dev1modelcost の値を出力しています。

さらに、別のオブジェクト dev2 を生成して、異なる値を代入する例も見てみましょう。

# 新たにGadgetクラスからオブジェクトを生成し、変数dev2に保存する
dev2 = Gadget()

# dev2オブジェクトに対して、異なるデータ属性の値を設定する
dev2.model = "Earbuds"  # 機種名として"Earbuds"を代入
dev2.cost = 149         # 価格として149を代入

# dev2の属性値を表示する
print(dev2.model, dev2.cost)  # 出力結果: Earbuds 149

実行結果

Earbuds 149

 この例では、dev2 という別のインスタンスに対して、modelcost の値をそれぞれ "Earbuds"149 に設定しています。各オブジェクトは独自の属性値を持つため、同じクラスから生成されても異なる情報を保存できる点がデータ属性の大きな特徴です。

まとめ

ここでは、データ属性を利用してオブジェクトに値を保存する基本的な方法について解説しました。

  • オブジェクト.属性名という記法を用いて、既存の属性の値を参照できる。
  • オブジェクト.属性名 = 値という形式で、新たな属性を追加または既存の属性の値を更新できる。

 さらに、空の Gadget クラスを例に、インスタンス生成後に異なるデータ属性を設定し、各オブジェクトが独自の情報を保持できることを確認しました。これらの概念を理解することで、より柔軟で拡張性の高いオブジェクト指向プログラミングが可能になります。