クラスの属性を動的に更新したいのですが、setattrとgetattrの組み合わせが思い通りに動かないようです。
これが私のメインクラスです:
class Container(object):
def __init__(self):
pass
container = Container()
attributes = ['a', 'b', 'c', 'd']
values = [[1, 2, 3, 4, 5], [True, False], ['red', 'blue', 'green'], [0, 1, -1, -5, 99]]
この例では、属性とそれぞれの値のリストを明示的に作成したことに注意してください。ただし、このコードの実際のアプリケーションでは、事前に何も知りません。それらの番号、名前、値のいずれでもありません。これを動的に行う必要があります。
残りのコードは次のとおりです。
for key, value in zip(attributes, values):
setattr(container, key, [])
for val in value:
setattr(container, key, getattr(container, key).append(val))
コードを実行すると、この部分は機能しません。getattr 部分を tmp 変数に保存してから、setattr を呼び出す前にリストの append メソッドを呼び出すこともできますが、可能であれば要約したいと思います。
なぜこれが機能しないのか、誰でも説明できますか? どのような代替手段がありますか?
ご協力いただきありがとうございます