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