9

Python 3.8 では代入式が導入され、条件やラムダなどで値を代入できるようになりました。

if x := True:
    print(x)

ただし、このようなことをしようとしているため、これは属性の割り当てには及ばないようです

from typing import NamedTuple 

class Test(NamedTuple): 
    field : bool

test = Test(field=False) 

if test.field := True: 
    print(test.field)

次のエラーが発生します。

SyntaxError: cannot use named assignment with attribute 

(割り当て式とは対照的に)割り当てステートメントで属性を更新することは本当に可能ですか?そうであれば、なぜこの制限がありますか?

4

1 に答える 1