Pythonでは、オブジェクトが持つ属性とその値を格納する辞書を返す特殊属性として__dict__
があります。この属性はモジュール、クラス、インスタンスなどで参照可能ですが、文字列・リスト・辞書には__dict__
属性が無いので参照不可能です。
例えば、以下のようなクラスMyClass
があるとします。
class MyClass:
def __init__(self, x, y):
self.x = x
self.y = y
このクラスのインスタンスを作成して__dict__
を参照すると、MyClass
に定義されたx
,y
という属性に引数で与えられた値1,2が関連付けられていることが分かります。
obj = MyClass(1, 2)
print(obj.__dict__) # {'x': 1, 'y': 2}
また、__dict__
は辞書内の値を追加/更新/削除することも可能です。
#追加
obj.__dict__['z'] = 3
print(obj.__dict__) # {'x': 1, 'y': 2, 'z': 3}
#更新
obj.__dict__['x'] = 4
print(obj.__dict__) # {'x': 4, 'y': 2, 'z': 3}
#削除
del obj.__dict__['x']
print(obj.__dict__) # {'y': 2, 'z': 3}
このように、Pythonの__dict__
属性はオブジェクトの属性とその値を操作するための強力なツールです。しかし、その使用は注意が必要です。適切な使用方法と注意点を理解した上で、__dict__
属性を活用してPythonプログラミングをより効率的に行いましょう。