【Python入門】Pythonのvars関数とは?使い方と活用方法を徹底解説(Python 3.11)

Python

はじめに

Pythonには便利な組み込み関数が数多く存在します。その中でもvars()関数は、オブジェクトの属性を辞書として取得できる便利な関数です。本記事では、vars()関数の基本構文や使用例、さらに応用例について詳しく解説していきます。

vars関数とは?

vars()関数は、オブジェクトの属性(変数名とその値)を辞書型で取得するためのPythonの組み込み関数です。主にデバッグや動的な属性管理に役立ちます。

この関数は以下のような用途で利用されます。

  • クラスやインスタンスの属性を一覧で取得する
  • 辞書型オブジェクトの取得
  • locals()globals()と組み合わせた変数管理

vars関数の基本構文

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

vars([object])

引数

  • object(オプション): クラスやインスタンスを指定すると、そのオブジェクトの属性を辞書型で取得できます。
  • 引数なしで呼び出すと、locals()と同じ動作になり、現在のローカルスコープの変数一覧を取得します。

返り値

  • objectが指定された場合、そのオブジェクトの__dict__属性を返します。
  • objectが省略された場合、現在のローカル変数の辞書を返します。

vars関数の使用例

クラスのインスタンス属性を取得する

class Sample:
    def __init__(self, x, y):
        self.x = x
        self.y = y

obj = Sample(10, 20)
print(vars(obj))

実行結果

{'x': 10, 'y': 20}

引数なしで使用する(ローカル変数の取得)

x = 5
y = "hello"
print(vars())

実行結果(変数の状況によって変動)

{'x': 5, 'y': 'hello', ...}

vars関数の応用例

vars()を用いた動的なオブジェクト更新

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 25)
print(vars(person))  # {'name': 'Alice', 'age': 25}

# 動的に属性を追加
vars(person)['city'] = 'Tokyo'
print(vars(person))  # {'name': 'Alice', 'age': 25, 'city': 'Tokyo'}

実行結果

{'name': 'Alice', 'age': 25}
{'name': 'Alice', 'age': 25, 'city': 'Tokyo'}

vars()を使ってオブジェクトの属性を動的に変更

class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

car = Car("Toyota", "Corolla")
print(vars(car))

# 属性を動的に更新
vars(car).update({"model": "Camry", "year": 2024})
print(vars(car))

実行結果

{'brand': 'Toyota', 'model': 'Corolla'}
{'brand': 'Toyota', 'model': 'Camry', 'year': 2024}

まとめ

vars()関数はオブジェクトの属性を辞書として取得できる便利な組み込み関数です。デバッグや動的なオブジェクト管理に役立ち、様々なシチュエーションで活用できます。

ポイントのおさらい:

  • vars(object)でオブジェクトの属性を辞書形式で取得できる
  • vars()を引数なしで呼ぶと、ローカルスコープの変数一覧が取得できる
  • 動的な属性変更にも利用できる

Pythonのデータ管理をより柔軟にするために、ぜひvars()関数を活用してみてください!