1. ホーム
  2. python

[解決済み] AttributeError: Pythonで属性を設定できない

2023-05-31 04:04:17

質問

以下は私のコードです。

N = namedtuple("N", ['ind', 'set', 'v'])
def solve()
    items=[]
    stack=[]
    R = set(range(0,8))
    for i in range(0,8):
        items.append(N(i,R,8))      
        stack.append(N(0,R-set(range(0,1)),i))
    while(len(stack)>0): 
        node = stack.pop()
        print node
        print items[node.ind]   
        items[node.ind].v = node.v

最後の行で、私は items[node.ind].v の値を node.v というエラーが出てしまいます。

"AttributeError: can't set attribute"

何が問題なのか分かりませんが、きっと構文に基づいて node.v+=1 のようなステートメントを使用しても同じエラーが表示されます。私はPythonの初心者なので、上記の変更を可能にするための方法を提案してください。

どのように解決するのでしょうか?

items[node.ind] = items[node.ind]._replace(v=node.v)

(注意: _replace関数の先頭のアンダースコアのために、この解決策を使用することを躊躇しないでください。特にnamedtupleの場合、いくつかの関数は先頭のアンダースコアを持っていますが、これはプライベートであることを示すためのものではありません。)