Pythonの関数説明 vars()

vars() は、Pythonの組み込み関数の1つで、オブジェクトの属性とその値を含む辞書を返すために使用されます。この関数は、モジュール、クラス、インスタンスなど、ほとんどすべてのオブジェクトに適用できます。オブジェクトが持つ属性とその値を辞書として取得できるため、デバッグや動的なプログラム生成などの用途に役立ちます。

vars() 関数の基本的な構文は以下の通りです:

python
vars([object])
  • object (省略可能): 属性を取得したいオブジェクトを指定します。省略すると、ローカルスコープ(現在の関数やメソッド内)のローカル変数の辞書が返されます。

vars() 関数は指定されたオブジェクトの属性を辞書として返します。以下はいくつかの例です:

  1. モジュールの属性を取得する例:
python
import math

module_vars = vars(math)
print(module_vars)  # math モジュールの属性と値を含む辞書を表示
  1. クラスの属性を取得する例:
python
class MyClass:
    def __init__(self, x, y):
        self.x = x
        self.y = y

obj = MyClass(3, 4)
obj_vars = vars(obj)
print(obj_vars)  # クラスインスタンスの属性と値を含む辞書を表示
  1. ローカル変数の辞書を取得する例:
python
def my_function():
    local_variable = 42
    return vars()

local_vars = my_function()
print(local_vars)  # ローカル変数の辞書を表示

vars() 関数の主な特徴と注意点:

  • 辞書の形式:
    vars() は指定されたオブジェクトの属性を辞書の形式で返します。辞書のキーは属性名であり、値はそれに対応する属性の値です。
  • 書き込み可能:
    vars() で取得した辞書を変更することができます。つまり、オブジェクトの属性値を変更できます。ただし、これは推奨されない操作です。
  • オブジェクトの種類:
    vars() はほとんどすべてのオブジェクトに適用できますが、組み込みオブジェクト(例: int、str、list)に対しては使用できません。また、クラスが
    __slots__ 属性を持つ場合、
    vars() は正しく動作しないことがあります。

vars() 関数はオブジェクトの属性を取得する手法の一つであり、デバッグやリフレクションなどのシナリオで役立ちます。ただし、変更可能なオブジェクトの属性を変更する場合は注意が必要であり、できる限り慎重に操作することをお勧めします。