12

新しいセイウチ演算子 ( ) を使用してインスタンス属性を設定できないことを知りました。:=おそらく無効な構文です ( 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
4

2 に答える 2