因此,在我的代码中使用getattr时,我发现了以下内容:
myVariable = foo.A.bar
Run Code Online (Sandbox Code Playgroud)
工作...但是这样的事情:
B = "A"
myVariable = getattr(foo, B + ".bar")
Run Code Online (Sandbox Code Playgroud)
返回foo不包含属性A.bar的错误.我哪里错了?谢谢!
Cat*_*lus 11
因为没有属性A.bar上foo.属性bar是指向的对象的一部分A,它是一个属性foo.你需要
getattr(foo.A, "bar")
Run Code Online (Sandbox Code Playgroud)
要么
getattr(getattr(foo, 'A'), 'bar')
Run Code Online (Sandbox Code Playgroud)
访问深层属性的通用代码是在点上拆分,直到找到最后一部分(我是从内存写入,未经过测试):
def getattr_deep(start, attr):
obj = start
for part in attr.split('.'):
obj = getattr(obj, part)
return obj
getattr_deep(foo, 'A.bar')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |