分配无法访问Python对象属性

时间:2012-10-29 21:09:35

标签: python class object methods

我的课程中有以下方法定义:

def show_values(self):
        for node in self.Nodes:
            nod = self.Nodes[node]
            print self.M.nod.value

我收到以下错误

File "nfg.py", line 30, in show_values
    print self.M.nod.value
AttributeError: 'Model' object has no attribute 'nod'

我当然希望到达self.M.(self.Nodes[node]).value,但不知道 怎么样。你能救我吗?

3 个答案:

答案 0 :(得分:3)

假设self.Nodes[node]是您要用于属性查找的字符串,请尝试以下操作:

def show_values(self):
    for node in self.Nodes:
        nod = self.Nodes[node]
        print getattr(self.M, nod).value

请注意,getattr(foo, 'bar')相当于foo.bar

如果self.M是字典或其他映射类型,并且您想要进行密钥查找,请使用以下命令:

def show_values(self):
    for node in self.Nodes:
        nod = self.Nodes[node]
        print self.M[nod].value

答案 1 :(得分:1)

什么是M?如果nod(即self.nodes[node])是包含self.M属性名称的字符串,则可以通过M的命名空间字典{{1}访问该属性}}。因此,要访问其self.M.__dict__字段,请使用value

如果那不是你想要做的,我建议你提供一些关于你班级的更多信息。

答案 2 :(得分:0)

你说的是:

print self.M.nod.value

改为使用:

print self.M.node.value