0

私のクラスには次のメソッド定義があります。

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のですが、方法がわかりません。手伝って頂けますか?

4

3 に答える 3

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
于 2012-10-29T21:16:01.087 に答える
1

とはM? nod(ie, self.nodes[node]) が の属性の名前を含む文字列の場合、の名前空間ディクショナリself.Mを介してその属性にアクセスできます。そのフィールドにアクセスするには、 を使用します。Mself.M.__dict__valueself.M.__dict__[nod].value

そうでない場合は、クラスについてもう少し情報を提供することをお勧めします。

于 2012-10-29T21:13:13.053 に答える
0

あなたが言っています:

print self.M.nod.value

代わりにこれを使用してください:

print self.M.node.value
于 2012-10-29T21:12:35.757 に答える