我刚刚了解到新的海象运算符 ( :=
) 不能用于设置实例属性,它被认为是无效语法(引发 a SyntaxError
)。
为什么是这样? (您能提供提到这一点的官方文档的链接吗?)
我浏览了PEP 572,但找不到是否/在哪里记录了这一点。
研究
这个答案提到了这个限制,但没有解释或来源:
您不能对对象属性使用海象运算符
示例代码
class Foo:
def __init__(self):
self.foo: int = 0
def bar(self, value: int) -> None:
self.spam(self.foo := value) # Invalid syntax
def baz(self, value: int) -> None:
self.spam(temp := value)
self.foo = temp
def spam(self, value: int) -> None:
"""Do something with value."""
尝试将Foo结果导入SyntaxError:
self.spam(self.foo := value)
^
SyntaxError: cannot use assignment expressions with attribute
明月笑刀无情
RISEBY
相关分类