Python 3.8引入了赋值表达式,允许在条件和 lambda 中赋值,如下所示:
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
是否真的只能更新赋值语句中的属性(而不是赋值表达式),如果是,为什么会有这个限制?