获得自我的命名属性

时间:2011-07-15 12:57:28

标签: python

根据我对连接的理解,这段代码应该有效:

aList = ["first", "second", "last"]
for i in aList:
    print self.i

我的类定义了绑定self.first=something以及self.secondself.last。当我编写print self.first时,代码可以正常工作,但print self.i会引发异常。我做错了什么?

2 个答案:

答案 0 :(得分:9)

在你的代码中,“i”是一个字符串,你需要这样做:

aList = ["first", "second", "last"]
for i in aList:
    print getattr(self, i, None)

http://docs.python.org/library/functions.html#getattr

  

getattr(对象,名称[,默认])
      返回object的named属性的值。 name必须是一个字符串。如果字符串是对象属性之一的名称,   结果是该属性的值。例如,getattr(x,   'foobar')相当于x.foobar。如果命名属性没有   如果提供,则返回default,否则返回AttributeError   提高。

答案 1 :(得分:1)

您将first - 您的班级成员 - 与"first"混淆 - 一个字符串变量恰好包含与您的成员类似的内容。

如果要将字符串转换为真实字段

,请使用getattr