Pythonのクラスとメソッドを使って簡単な辞書の操作を行うプログラムを作ってみます。
■今回の環境(Python)
Google Colaboratory(Google Colab),記事作成時点ではPython 3.9.16が用いられる。
■クラスとメソッドを使って簡単な辞書の操作を行うプログラムの作成
では、早速クラスとメソッドを使って簡単な辞書の操作を行うプログラムの作成をするために、コードを書いていきます。
■コード
class MyDict: def __init__(self, dictionary): self.dictionary = dictionary def get_value(self, key): if key in self.dictionary: return self.dictionary[key] else: return None def set_value(self, key, value): self.dictionary[key] = value def delete_key(self, key): if key in self.dictionary: del self.dictionary[key] my_dict = { "apple": 100, "banana": 200, "orange": 300 } my_dict_obj = MyDict(my_dict)
MyDictというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にdef文を用いて’__init__’と記述し、コンストラクタを使います。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。次に第2の引数,パラメータとしてdictionaryを設定します。なお、最初の「self(自己)」という引数,パラメータを介して、「dictionary」というクラスのインスタンス変数が初期化されます。これでクラス内のすべてのメソッドからアクセス可能になります。この時にself(自己)に対してドット演算子( . )を用いて「dictionary」を指定します。
メソッドを定義後、def文を用いてget_value()というメソッドを定義します。括弧内には、第1の引数,パラメータとしてselfを設定します。selfはインスタンス自身を指す特別な変数でこれでインスタンス変数にアクセスすることができます。第2の引数,パラメータとしてkeyを設定します。このメソッドが呼び出された時の処理として、if文を用いてself.dictionary内の辞書でkeyで受け取った値が存在するかどうかをチェックする。チェック後、True(真)の場合には、returnとしてself.dictionary内の[key]を返す。False(偽)の場合はelse節でreturnとしてNone(メソッドが値を返さないこと)という処理になります。
次にdef文を用いてset_value()というメソッドを定義します。括弧内には、第1の引数,パラメータとしてselfを設定します。第2の引数,パラメータとしてkeyを設定します。第3の引数,パラメータとしてvalueを設定します。このメソッドが呼び出された時の処理として、インスタンス変数であるself.dictionaryに新しいキーと値のペアを追加します。(”key”をキーとし、”value”を値とするペアを追加)
次にdef文を用いてdelete_key()というメソッドを定義します。括弧内には、第1の引数,パラメータとしてselfを設定します。第2の引数,パラメータとしてkeyを設定します。このメソッドが呼び出された時の処理として、if文を用いてself.dictionary内の辞書でkeyで受け取った値が存在するかどうかをチェックする。チェック後、True(真)の場合にはdel文を用いてself.dictionary内の[key]を削除するという処理になります。
メソッドを定義後、my_dictという変数を定義し、その中に波括弧”{ }”を用いて、その中にコロン”:”でキーと値のペアを記述し、辞書を作成します。
作成後、my_dict_objという変数を定義し、その中にMyDict()を格納し、インスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内にアクセスできるようになりました。なお、括弧内には引数,パラメータとしてmy_dictを渡します。
■実行・検証
このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。
■指定したキーの値を取得する
print(my_dict_obj.get_value("banana"))
実行する際に、まずは作成したオブジェクトであるmy_dict_objに対して(.)ドット演算子を用いてget_value()を呼び出します。括弧内には、指定するキーを引数,パラメータとして渡します。
渡した後に実行すると、キーとペアの値が出力されました。
■キーと値のペアを新しく設定する
print(my_dict_obj.set_value("Strawberry", 400))
次に作成したオブジェクトであるmy_dict_objに対して(.)ドット演算子を用いてset_value()を呼び出します。括弧内には第1の引数,パラメータとしてキーを、第2の引数,パラメータとして値を渡します。今回はキーが「Strawberry」で値が「400」です。
実行してみると「None」と出力されましたが設定は完了しました。
■新しく設定したキーの値を取得する
print(my_dict_obj.get_value("Strawberry"))
次に作成したオブジェクトであるmy_dict_objに対して(.)ドット演算子を用いてget_value()を呼び出します。括弧内には、新しく設定したキーを引数,パラメータとして渡します。
実行してみると、新しく設定したキーとペアの値を出力させることができました。なお、「my_dict_obj.set_value(“Strawberry”, 400)」を設定したままにしておかないと、辞書内に保持されない。
■新しく追加したキーの値を削除し出力する
my_dict_obj.delete_key("Strawberry") print(my_dict_obj.get_value("Strawberry"))
次に作成したオブジェクトであるmy_dict_objに対して(.)ドット演算子を用いてdelete_key()を呼び出します。括弧内には、新しく設定したキーを引数,パラメータとして渡します。今回の場合は「Strawberry」。
その後、my_dict_objに対して(.)ドット演算子を用いてget_value()を呼び出し、Strawberryの値を出力させてみます。
実行してみると、「None」と出力され、delete_key()を用いたことでキーとペアの値が削除されたことが確認できました。
コメント