データクラスのpost_initメソッドで定義された変数をシリアル化できますか?

ウォーターフロント
from dataclasses import dataclass
@dataclass
class A:
    x: str
    y: str
    def __post_init__(self):
        self.z = self.x+self.y
a = A('abc', 'def')
a.z
'abcdef'
from dataclasses import asdict
asdict(a)
{'x': 'abc', 'y': 'def'}

ご覧のとおり、zシリアル化されていません。それをシリアル化する方法(それを呼び出す以外__dict__)?

gold_cy

zクラスを最初に定義するときに変数として含める必要がありますが、さらに、パラメーターfield__init__リストからそれを省略するために使用する必要があります。

from dataclasses import dataclass, field, asdict

@dataclass
class A:
    x: str
    y: str
    z: str = field(init=False)
    def __post_init__(self):
        self.z = self.x + self.y

a = A("abc", "def")
a.z
>> 'abcdef'

asdict(a)
>> {'x': 'abc', 'y': 'def', 'z': 'abcdef'}

ドキュメントに示されているように、ここで詳細を確認できます

これは、ディクショナリを作成するための内部で、asdictメソッド__dataclass_fields__がオブジェクトの属性から属性をフェッチするためですzはこれらの属性の一部ではないためz、オブジェクトをディクショナリに変換するときにフェッチません

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

ヘルパーディレクトリで定義されたメソッドは、コントローラーでアクセスできますか?

分類Dev

ケースクラスで定義された変数のみでパラメーター化されたScalaケースクラスコピーメソッドがなぜですか?

分類Dev

クラス内のネストされたメソッドで「タスクをシリアル化できない」を回避する

分類Dev

Pythonスクリプトはインタラクティブセッションで定義された変数にアクセスできますか?

分類Dev

コマンドは無視されました。不明なターゲット:Googleアナリティクスのトラッキングコードでカスタムディメンションを設定するときに未定義

分類Dev

Cモジュールで定義されたタイプをサブクラス化するときに無視されるメソッド

分類Dev

インデックスのインスタンスの配列に変数が含まれているため、クラスメソッドを定義できないのはなぜですか?

分類Dev

別のメソッドで定義された内部クラス内の非最終変数lblNewLabelを参照することはできません

分類Dev

モジュールで明示的に定義されたメソッド/関数のリストを取得します

分類Dev

ヘッダーファイルで定義されていないデストラクタの変数を使用できますか?

分類Dev

コンストラクターのプロトタイプで定義されたメソッドは、Javascriptのコンストラクターのインスタンスメンバーにどのようにアクセスできますか?

分類Dev

クラスが初期化されるときに、kotlinは動的メソッドを定義できますか?

分類Dev

内部メソッドから外部メソッドで定義された変数にアクセスする方法

分類Dev

attr_accessorで定義されたクラス変数のメソッドエラーはありません

分類Dev

mapreduceのデフォルトの並べ替えでは、WritableComparableクラスまたはcomapreTo()メソッドで定義されたComparatorを使用しますか?

分類Dev

親で定義されたメソッドで親変数と子変数にアクセスします-PHP

分類Dev

Python3のクラスの__init__メソッド内で定義された変数を継承する方法

分類Dev

C ++のクラス内でハッシュコードメソッドを定義できますか?

分類Dev

_init_メソッドで変数を定義するためのベストプラクティスはありますか

分類Dev

WCFメソッドに渡されたパラメーターをシリアル化/逆シリアル化できません

分類Dev

クラスコンストラクターで初期化されたタイプのストリームのメンバー変数を使用できますか?

分類Dev

コンストラクターに設定された変数が別のメソッドで定義されていません

分類Dev

デリゲートメソッドの一部として同じジェネリックによって定義されたパラメーターからジェネリック型を推測できないのはなぜですか?

分類Dev

ルートのメタデータを定義するときにルーターのクエリパラメータにアクセスできますか?

分類Dev

クラスメソッド内で定義されたPython関数は自分自身にアクセスできますか?

分類Dev

Javaでは、スーパークラスのメソッドがサブクラスのインスタンスから保護されたメソッドまたはプライベートのメソッド/変数にアクセスできないのはなぜですか?

分類Dev

リンカがグローバル関数に対して複数定義されたシンボルを報告するのに、クラス静的メソッドを報告しないのはなぜですか

分類Dev

メソッド内で定義された内部クラスは、内部クラス内からアクセスされる場合、メソッドで宣言された変数がfinalである必要があります

分類Dev

コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

Related 関連記事

  1. 1

    ヘルパーディレクトリで定義されたメソッドは、コントローラーでアクセスできますか?

  2. 2

    ケースクラスで定義された変数のみでパラメーター化されたScalaケースクラスコピーメソッドがなぜですか?

  3. 3

    クラス内のネストされたメソッドで「タスクをシリアル化できない」を回避する

  4. 4

    Pythonスクリプトはインタラクティブセッションで定義された変数にアクセスできますか?

  5. 5

    コマンドは無視されました。不明なターゲット:Googleアナリティクスのトラッキングコードでカスタムディメンションを設定するときに未定義

  6. 6

    Cモジュールで定義されたタイプをサブクラス化するときに無視されるメソッド

  7. 7

    インデックスのインスタンスの配列に変数が含まれているため、クラスメソッドを定義できないのはなぜですか?

  8. 8

    別のメソッドで定義された内部クラス内の非最終変数lblNewLabelを参照することはできません

  9. 9

    モジュールで明示的に定義されたメソッド/関数のリストを取得します

  10. 10

    ヘッダーファイルで定義されていないデストラクタの変数を使用できますか?

  11. 11

    コンストラクターのプロトタイプで定義されたメソッドは、Javascriptのコンストラクターのインスタンスメンバーにどのようにアクセスできますか?

  12. 12

    クラスが初期化されるときに、kotlinは動的メソッドを定義できますか?

  13. 13

    内部メソッドから外部メソッドで定義された変数にアクセスする方法

  14. 14

    attr_accessorで定義されたクラス変数のメソッドエラーはありません

  15. 15

    mapreduceのデフォルトの並べ替えでは、WritableComparableクラスまたはcomapreTo()メソッドで定義されたComparatorを使用しますか?

  16. 16

    親で定義されたメソッドで親変数と子変数にアクセスします-PHP

  17. 17

    Python3のクラスの__init__メソッド内で定義された変数を継承する方法

  18. 18

    C ++のクラス内でハッシュコードメソッドを定義できますか?

  19. 19

    _init_メソッドで変数を定義するためのベストプラクティスはありますか

  20. 20

    WCFメソッドに渡されたパラメーターをシリアル化/逆シリアル化できません

  21. 21

    クラスコンストラクターで初期化されたタイプのストリームのメンバー変数を使用できますか?

  22. 22

    コンストラクターに設定された変数が別のメソッドで定義されていません

  23. 23

    デリゲートメソッドの一部として同じジェネリックによって定義されたパラメーターからジェネリック型を推測できないのはなぜですか?

  24. 24

    ルートのメタデータを定義するときにルーターのクエリパラメータにアクセスできますか?

  25. 25

    クラスメソッド内で定義されたPython関数は自分自身にアクセスできますか?

  26. 26

    Javaでは、スーパークラスのメソッドがサブクラスのインスタンスから保護されたメソッドまたはプライベートのメソッド/変数にアクセスできないのはなぜですか?

  27. 27

    リンカがグローバル関数に対して複数定義されたシンボルを報告するのに、クラス静的メソッドを報告しないのはなぜですか

  28. 28

    メソッド内で定義された内部クラスは、内部クラス内からアクセスされる場合、メソッドで宣言された変数がfinalである必要があります

  29. 29

    コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

ホットタグ

アーカイブ