因此,在我的代码中使用 getattr 时,我发现了以下内容:
myVariable = foo.A.bar
有效...但是是这样的:
B = "A"
myVariable = getattr(foo, B + ".bar")
返回错误,指出 foo 不包含属性 A.bar。我哪里出错了?谢谢!
因为没有属性A.bar
on foo
。属性bar
是指向的对象的一部分A
,这是一个属性foo
。你需要
getattr(foo.A, "bar")
or
getattr(getattr(foo, 'A'), 'bar')
访问深层属性的通用代码是按点拆分,直到找到最后一部分(我是从内存中编写的,未测试):
def getattr_deep(start, attr):
obj = start
for part in attr.split('.'):
obj = getattr(obj, part)
return obj
getattr_deep(foo, 'A.bar')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)