属性名に対応する文字列を指定してオブジェクト属性にアクセス(取得または設定)する方法 質問する

属性名に対応する文字列を指定してオブジェクト属性にアクセス(取得または設定)する方法 質問する

tによって指定された属性の値をどのように設定/取得しますかx?

class Test:
   def __init__(self):
       self.attr1 = 1
       self.attr2 = 2

t = Test()
x = "attr1"

同じ手法で、文字列からメソッドを呼び出す基本的に、それは 2 つの問題です。メソッドへのアクセス (ここでは同じ問題の一例にすぎません) と、アクセスされたものの呼び出し (これは簡単で、通常どおりアクセスした場合と同じように動作します) です。

実際には、モジュールの名前(文字列)を使用してモジュールの関数を呼び出す実際には同じ問題ですが、モジュールが同じように動作する「属性」を持つ「オブジェクト」であるということは明らかではない可能性があります。

ベストアンサー1

組み込み関数には、getattrそしてsetattr

getattr(object, attrname)
setattr(object, attrname, value)

この場合

x = getattr(t, 'attr1')
setattr(t, 'attr1', 21)

おすすめ記事