ホームページ > バックエンド開発 > Python チュートリアル > Pythonオブジェクトのシリアル化と脱介入:パート1

Pythonオブジェクトのシリアル化と脱介入:パート1

Lisa Kudrow
リリース: 2025-03-08 09:39:10
オリジナル
706 人が閲覧しました

Serialization and Deserialization of Python Objects: Part 1

Pythonオブジェクトのシリアル化と脱介入は、非自明のプログラムの重要な側面です。 Pythonファイルに何かを保存すると、構成ファイルを読み取る場合、またはHTTPリクエストに応答する場合、オブジェクトシリアル化と脱滑り化を行います。

シリアル化と脱派化は、ある意味で世界で最も退屈なものです。これらすべての形式とプロトコルを気にするのは誰ですか? Pythonオブジェクトを維持またはストリーミングし、後で完全に取得したいと考えています。

これは、概念レベルで世界を見るのに最適な方法です。ただし、実用的なレベルでは、選択したシリアル化スキーム、形式、またはプロトコルは、プログラムが実行される速さ、セキュリティ、メンテナンスの自由、および他のシステムとの相互運用性の程度を決定する場合があります。

異なる状況には異なる解決策が必要であるため、

非常に多くの選択肢があります。 「ワンサイズフィット」アプローチは機能しません。この2部構成のチュートリアルでは、次のようになります

    最も成功したシリアル化と脱派化スキームの利点と短所の概要
  • それらの使用方法を示します
  • 特定のユースケースを選択するためのガイドライン
  • を提供します
実行例

次のセクションでは、異なるシリアイザーを使用して同じPythonオブジェクトグラフをシリアル化して脱必要にします。複製を避けるために、ここでこれらのオブジェクトグラフを定義しましょう。

単純なオブジェクト図

単純なオブジェクトグラフは、整数、文字列、浮動小数点数、ブール値、およびデータタイムオブジェクトのリストを含む辞書と、オープンファイル(ファイルのようなオブジェクト)にシリアル化できるダンプ、ロード、およびダンプ()メソッドを備えたユーザー定義のクラスインスタンスです。

  1. load()メソッドは、開いたファイルのようなオブジェクトから脱色します。

  2. typeRror:次のように: `` ` Traceback(最新のコールLast):


    file "serialize.py"、in
    print(json.dumps
    file "/usr/lib/python3.8/json/ j)file "/usr/lib/python3.8/json/encoder.py"、line 199、エンコード
    chunks = self.iterencode(o、_one_shot = true)
    ファイル.py "、行179、デフォルトclass。
    name} '
    typeerror:タイプAのオブジェクトはjsonシリアル化できません
    哇!这看起来一点也不好。发生了什么?错误消息是 JSONEncoder 类使用的 default() 方法在 JSON 编码器遇到无法序列化的对象时调用的。 自定义编码器的任务是将其转换为 JSON 编码器能够编码的 Python 对象图。在本例中,我们有两个需要特殊编码的对象:A 类。以下编码器可以完成这项工作。每个特殊对象都转换为“\_\_A\_\_”和 pprint 函数的 load() 和 object_hook 参数,允许您提供自定义函数来将字典转换为对象。

    def decode_object(o):
    if 'aa
    ' in o:
    a = a()a。dict.update(o ['a
    '] ' dateTime
    ' in o:
    return datetime.sttime(o ['dateTime']、 '%y-%m-%dt%h:%m:%s)
    deserialized = json.loads(serialized、object_hook = decode_object)print(deserialized)
    #印刷:{'a':<main
    .a at = "" object = "> 0)}

    <code>
    让我们使用 object_hook 参数进行解码。
    </code>
    ログイン後にコピー
    deserialized == complex


    #false
    &lt;/main.a&gt; に評価します

以上がPythonオブジェクトのシリアル化と脱介入:パート1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート