因此,在我的代码中使用getattr时,我发现了以下内容:
myVariable = foo.A.barworks...but类似于以下内容:
B = "A"
myVariable = getattr(foo, B + ".bar")返回foo不包含属性A.bar的错误。我哪里错了?谢谢!
发布于 2011-10-15 23:52:55
因为foo上没有属性A.bar。属性bar是A指向的对象的一部分,它是foo的一个属性。你需要其中之一
getattr(foo.A, "bar")或
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')发布于 2011-10-16 00:02:55
等同于:
myVariable = foo.A.bar 使用getattr需要2个步骤。
aObject = getattr(foo, 'A')
myVariable = getattr(aobject, 'bar')按照您的方法`myVariable = getattr(foo,B+ ".bar")意味着'myVariable = getattr(foo,"B.bar")‘getAttr现在查找显然不存在的字符串"B.bar“。
https://stackoverflow.com/questions/7778867
复制相似问题