オブジェクトを作成して属性を追加するにはどうすればいいですか? 質問する

オブジェクトを作成して属性を追加するにはどうすればいいですか? 質問する

Python で動的オブジェクトを作成し、それに属性を追加したいのですが、うまくいきませんでした:

obj = object()
obj.somefield = "somevalue"

AttributeError: 'object' オブジェクトには属性 'somefield' がありません


動作しない理由の詳細については、「オブジェクト」クラスのインスタンスに属性を設定できません

ベストアンサー1

組み込みはインスタンス化できますが、属性を設定することはできません。(まさにこの目的のために、それができればいいのですが。) これは、属性を保持するためのobjectがないためです。__dict__


私は通常次のようにします:

class Object(object):
    pass

obj = Object()
obj.somefield = "somevalue"

ただし、Objectクラスが保持するデータに応じて、より意味のある名前を付けることを検討してください。


dictもう 1 つの可能性は、キーを取得するための属性アクセスを許可する のサブクラスを使用することです。

class AttrDict(dict):
    def __getattr__(self, key):
        return self[key]

    def __setattr__(self, key, value):
        self[key] = value

obj = AttrDict()
obj.somefield = "somevalue"

辞書を使用してオブジェクト属性をインスタンス化するには:

d = {"a": 1, "b": 2, "c": 3}

for k, v in d.items():
    setattr(obj, k, v)

おすすめ記事