首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - getattr和连接

Python - getattr和连接
EN

Stack Overflow用户
提问于 2011-10-15 23:50:52
回答 2查看 632关注 0票数 3

因此,在我的代码中使用getattr时,我发现了以下内容:

代码语言:javascript
复制
myVariable = foo.A.bar

works...but类似于以下内容:

代码语言:javascript
复制
B = "A"
myVariable = getattr(foo, B + ".bar")

返回foo不包含属性A.bar的错误。我哪里错了?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-15 23:52:55

因为foo上没有属性A.bar。属性barA指向的对象的一部分,它是foo的一个属性。你需要其中之一

代码语言:javascript
复制
getattr(foo.A, "bar")

代码语言:javascript
复制
getattr(getattr(foo, 'A'), 'bar')

访问深度属性的通用代码是在点上拆分,直到找到最后一部分(我是从内存中编写的,而不是测试的):

代码语言:javascript
复制
def getattr_deep(start, attr):
    obj = start
    for part in attr.split('.'):
        obj = getattr(obj, part)
    return obj

getattr_deep(foo, 'A.bar')
票数 12
EN

Stack Overflow用户

发布于 2011-10-16 00:02:55

等同于:

代码语言:javascript
复制
myVariable = foo.A.bar 

使用getattr需要2个步骤。

代码语言:javascript
复制
aObject = getattr(foo, 'A') 
myVariable = getattr(aobject, 'bar')

按照您的方法`myVariable = getattr(foo,B+ ".bar")意味着'myVariable = getattr(foo,"B.bar")‘getAttr现在查找显然不存在的字符串"B.bar“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7778867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档