我有一段代码,其中我有一个对象B
,它有另一个对象A
作为属性,我希望用户能够按名称设置任一对象的属性。如何让用户设置A
或B
的属性
以下代码说明了我正在尝试执行的操作:
>>> 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
我只想提示用户输入属性名称和值
我用以下代码提示用户:
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)}")
编辑:问题已解决,但我在两天内无法接受自己的答案
无法使用
setattr()
中的属性名称遍历对象。因此,要模拟这种行为,可以在.
上拆分属性名称,并使用getattr()
选择要在其上设置属性的对象。这样,您只需要提示用户输入属性名称和值相关问题 更多 >
编程相关推荐