※当サイトではアフィリエイト広告を利用しています。

python基礎

【python】varsを使ってクラス内で保持している情報を取得

こんにちは、タナカです。

この記事では、pythonの組み込む関数であるvarsの使い方を紹介します。

varsを使うことで、クラス内で保持させた情報を一括で取得することができます。

ではいきましょう。

この記事の内容

pythonの組み込みであるvarsの使い方がわかる

1. pythonの組み込み関数とは

組み込み関数とは、importなしで利用できる関数のことです。例えば、print()やsum()などが対象になります。

公式リファレンスにすべて記載されているので参考にしてください。

2. pythonの組み込み関数であるvarsとは

varsの説明は、公式リファレンスで下記のように記載されています。

モジュール、クラス、インスタンス、あるいはそれ以外の __dict__ 属性を持つオブジェクトの、 __dict__ 属性を返します。

モジュールやインスタンスのようなオブジェクトは、更新可能な __dict__ 属性を持っています。ただし、それ以外のオブジェクトでは __dict__ 属性への書き込みが制限されている場合があります。書き込みに制限がある例としては、辞書を直接更新されることを防ぐために types.MappingProxyType を使っているクラスがあります。

引数がなければ、vars() は locals() のように振る舞います。ただし、辞書 locals への更新は無視されるため、辞書 locals は読み出し時のみ有用であることに注意してください。

(引用元: 公式リファレンス

言葉だけだとよくわからないので実際に使ってみます。簡単な例としてコンストラクタ内にnameやageなどの人に関する情報を記述しました。初期値としてはすべてNoneとしています。

class Person():
    def __init__(self):
        self.name = None
        self.age = None
        self.height = None
        self.weight = None
        self.sex = None

    def getDatas(self):
        self.name = 'sato'
        self.age = 35
        self.height = 180
        self.weight = 70
        self.sex = 'male'

 

まずはインスタンスを生成してみます。

# インスタンスの生成
ex = Example()

 

インスタンスを生成した直後でvarsを使って、クラス内で保持している情報を辞書型で取得するとこのようになります。

print(vars(ex))
# >> {'name': None, 'age': None, 'height': None, 'weight': None, 'sex': None}

 

すべての情報でNoneが返ってきました。

次にgetDatasという関数を使って、nameなどの情報を更新したいと思います。

# メソッドの読み出し
ex.getDatas()
print(vars(ex))
# >> {'name': 'sato', 'age': 35, 'height': 180, 'weight': 70, 'sex': 'mail'}

 

今度はnameに’sato’などの情報が入っていることがわかります。

このようにvarsは、varsを実行したタイミングで保持している情報を辞書型で取得することができます。

まとめ

pythonの組み込み関数であるvarsについて紹介しました。

このような便利な関数を使えるようになると、アプリケーション開発などさらにシンプルかつ可読性の高いコードを記述できると思います。