代入式にフィールド値を設定できません

babaneekus

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 

(代入式ではなく代入ステートメントの属性を更新することだけが本当に可能ですか?そうであれば、なぜこの制限がありますか?

アーティエ

ペップから:

代入式と代入文の違い

最も重要なの:=は、が式であるため、ラムダ関数や内包表記など、ステートメントが不正なコンテキストで使用できることです。

逆に、代入式は、代入ステートメントにある高度な機能をサポートしていません。

  • 単一以外の単一の割り当てターゲットNAMEはサポートされていません。
    # No equivalent
    a[i] = x
    self.rest = []
    

複雑すぎることを避けるために作られたようです(これはおそらくどこかで完全なステートメントに変換する必要があることを示しています)。また、これはすでに次の方法で実現できますsetattr

# This is not that readable, but has the same semantics as what you asked for
if (setattr(test, 'field', new_test_field := ...), new_test_field)[1]:
    ...

# More readable with a helper function
def set_member(obj, member_name, new_value):
    setattr(obj, member_name, new_value)
    return new_value

if set_member(test, 'field', ...):
    ...


# But you might have wanted to check the new `test.field`
# instead of what you assigned it (In case it was a getter/setter descriptor)
def set_member(obj, member_name, new_value):
    setattr(obj, member_name, new_value)
    return getattr(obj, member_name)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

静的フィールドに変数値を設定できません

分類Dev

jqueryから非表示フィールドに値を設定できません

分類Dev

ブールフィールドを明示的にnullに設定できません

分類Dev

日付フィールドの値を設定できません

分類Dev

XSDの問題により、「CustomData」フィールドに複数の値を設定できません。

分類Dev

メッセージタイプ「MarketDataRequest」のフィールド「Symbol」に値を設定できません

分類Dev

角度jsでデフォルトでフォームフィールド値を設定できません

分類Dev

フィールドをcom.sun.proxy。$ Proxyに設定できません

分類Dev

Azure DevOps:BuildNumberフィールドに「:」記号を設定できません

分類Dev

リフレクションでフィールド値を設定できませんでした

分類Dev

フォームの隠しフィールドを設定できません

分類Dev

Djangoフォームフィールドにラベルを設定できません

分類Dev

CRM:エンティティの作成中にlastusedincampaignフィールドを設定できません

分類Dev

スロー内に基本タイプを含むHibernateEnvers監査@Embeddedは、フェッチ時にフィールドをnull値に設定できません

分類Dev

org.springframework.orm.jpa.JpaSystemException:リフレクションによってフィールド値[POST_INSERT_INDICATOR]の値を設定できませんでした

分類Dev

org.hibernate.PropertyAccessException:文字列のリフレクションによってフィールド値[STRING]値を設定できませんでした

分類Dev

Django1.4のModelFormで除外フィールドを設定できません

分類Dev

入力フィールドでDateTimeを設定できません。常にDateTime.MinValueを返します

分類Dev

anglejs: スコープ データでフィルター メソッドを動的に設定できません

分類Dev

シームの問題:リフレクションによってフィールド値を設定できませんでした

分類Dev

SingHereフィールドの絶対位置を設定できません

分類Dev

Knex.jsでの移行-null許容フィールドに外部キーを設定できません

分類Dev

PCAPredictで入力フィールドにテキストを設定できません

分類Dev

入力フィールドにthis.idでIDを設定することはできません

分類Dev

購入領収書でカスタムフィールドを有効に設定できません

分類Dev

LocalStorageにブール値を設定できませんか?

分類Dev

ブール値をnullに設定できません

分類Dev

java.lang.Integerフィールドをjava.lang.Integerに設定できません

分類Dev

フィールドにランダムな列挙型を設定できません

Related 関連記事

  1. 1

    静的フィールドに変数値を設定できません

  2. 2

    jqueryから非表示フィールドに値を設定できません

  3. 3

    ブールフィールドを明示的にnullに設定できません

  4. 4

    日付フィールドの値を設定できません

  5. 5

    XSDの問題により、「CustomData」フィールドに複数の値を設定できません。

  6. 6

    メッセージタイプ「MarketDataRequest」のフィールド「Symbol」に値を設定できません

  7. 7

    角度jsでデフォルトでフォームフィールド値を設定できません

  8. 8

    フィールドをcom.sun.proxy。$ Proxyに設定できません

  9. 9

    Azure DevOps:BuildNumberフィールドに「:」記号を設定できません

  10. 10

    リフレクションでフィールド値を設定できませんでした

  11. 11

    フォームの隠しフィールドを設定できません

  12. 12

    Djangoフォームフィールドにラベルを設定できません

  13. 13

    CRM:エンティティの作成中にlastusedincampaignフィールドを設定できません

  14. 14

    スロー内に基本タイプを含むHibernateEnvers監査@Embeddedは、フェッチ時にフィールドをnull値に設定できません

  15. 15

    org.springframework.orm.jpa.JpaSystemException:リフレクションによってフィールド値[POST_INSERT_INDICATOR]の値を設定できませんでした

  16. 16

    org.hibernate.PropertyAccessException:文字列のリフレクションによってフィールド値[STRING]値を設定できませんでした

  17. 17

    Django1.4のModelFormで除外フィールドを設定できません

  18. 18

    入力フィールドでDateTimeを設定できません。常にDateTime.MinValueを返します

  19. 19

    anglejs: スコープ データでフィルター メソッドを動的に設定できません

  20. 20

    シームの問題:リフレクションによってフィールド値を設定できませんでした

  21. 21

    SingHereフィールドの絶対位置を設定できません

  22. 22

    Knex.jsでの移行-null許容フィールドに外部キーを設定できません

  23. 23

    PCAPredictで入力フィールドにテキストを設定できません

  24. 24

    入力フィールドにthis.idでIDを設定することはできません

  25. 25

    購入領収書でカスタムフィールドを有効に設定できません

  26. 26

    LocalStorageにブール値を設定できませんか?

  27. 27

    ブール値をnullに設定できません

  28. 28

    java.lang.Integerフィールドをjava.lang.Integerに設定できません

  29. 29

    フィールドにランダムな列挙型を設定できません

ホットタグ

アーカイブ