1. ホーム
  2. python

[解決済み] オブジェクトを作成し、それに属性を追加するにはどうすればよいですか?

2022-03-14 07:57:50

質問

Pythonで動的オブジェクト(別のオブジェクトの内部)を作成し、それに属性を追加したいのですが、どうすればいいですか?

試してみました。

obj = someobject
obj.a = object()
setattr(obj.a, 'somefield', 'somevalue')

が、これはうまくいかなかった。

何か思い当たることはありますか?

を編集してください。

から属性を設定しています。 for ループで、値のリストをループしています。

params = ['attr1', 'attr2', 'attr3']
obj = someobject
obj.a = object()

for p in params:
   obj.a.p # where p comes from for loop variable

上記の例では、次のようになります。 obj.a.attr1 , obj.a.attr2 , obj.a.attr3 .

を使いました。 setattr のやり方がわからなかったので、関数を使うことにしました。 obj.a.NAME から for のループになります。

の値に基づいて、どのように属性を設定するのでしょうか? p の例では?

どのように解決するのですか?

私の古代の バンチ しかし、もしあなたが "バンチクラス" を作りたくないなら、非常にシンプルなものがすでにPythonに存在しています -- すべての関数は任意の属性を持つことができます(ラムダ関数も含む)。 つまり、以下のように動作します。

obj = someobject
obj.a = lambda: None
setattr(obj.a, 'somefield', 'somevalue')

由緒正しきと比較して、分かりやすさが損なわれているかどうか Bunch のレシピがOKかどうかは、もちろんスタイルの判断に委ねます。