【问题标题】:Python object attribute can't be reached by assignmentPython 对象属性无法通过赋值获得
【发布时间】:2012-10-29 21:09:34
【问题描述】:

我的班级中有以下方法定义:

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,但不知道 如何。你能帮帮我吗?

【问题讨论】:

  • 你的意思是self.M[nod].value 吗? M 到底是什么?

标签: python class object methods


【解决方案1】:

假设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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你是说:

      print self.M.nod.value
      

      改用这个:

      print self.M.node.value
      

      【讨论】:

      • 我很确定 OP 实际上想使用nod 来检索M 的属性或哈希元素,这还不清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2016-11-08
      • 2021-05-11
      • 1970-01-01
      • 2013-01-14
      • 2013-01-02
      • 2015-10-17
      相关资源
      最近更新 更多