<p>我有一段代码,其中我有一个对象<code>B</code>,它有另一个对象<code>A</code>作为属性,我希望用户能够按名称设置任一对象的属性。如何让用户设置<code>A</code>或<code>B</code>的属性</p>
<p>以下代码说明了我正在尝试执行的操作:</p>
<pre><code>>>> class A:
... def __init__(self):
... self.asd = 123
>>> class B:
... def __init__(self, a):
... self.a = a
>>> a=A()
>>> b=B(a)
>>> b.a.asd
123
>>> setattr(b, 'a.asd', 1000)
>>> b.a.asd
123 # I would like this to be 1000
</code></pre>
<p>我只想提示用户输入属性名称和值</p>
<p>我用以下代码提示用户:</p>
<pre><code>prop = input("Property name to set: ")
try:
print(f"Current value of property {prop}: {getattr(B, prop)}")
value = input("Property value to set: ")
setattr(B, prop, value)
except AttributeError:
print(f"Object {B} has no property named {prop}. See {dir(B)}")
</code></pre>
<p>编辑:问题已解决,但我在两天内无法接受自己的答案</p>