Rumah >pembangunan bahagian belakang >Tutorial Python >Serialization dan deserialisasi objek python: Bahagian 1

Serialization dan deserialisasi objek python: Bahagian 1

Lisa Kudrow
Lisa Kudrowasal
2025-03-08 09:39:10704semak imbas

Serialization and Deserialization of Python Objects: Part 1

Serialization dan deserialization objek Python adalah aspek utama dari mana-mana program yang tidak remeh. Jika anda menyimpan sesuatu ke fail python, anda melakukan siri objek dan deserialization jika anda membaca fail konfigurasi, atau jika anda menjawab permintaan HTTP.

Serialization dan deserialization adalah perkara yang paling membosankan di dunia dalam erti kata. Siapa yang peduli dengan semua format dan protokol ini? Anda mahu berterusan atau mengalirkan beberapa objek python dan mengambilnya sepenuhnya pada masa yang akan datang.

Ini adalah cara yang baik untuk melihat dunia pada tahap konseptual. Walau bagaimanapun, pada tahap praktikal, skim siri, format, atau protokol yang anda pilih boleh menentukan seberapa cepat program berjalan, keselamatan, kebebasan status penyelenggaraan, dan tahap interoperabilitas dengan sistem lain.

Terdapat begitu banyak pilihan kerana situasi yang berbeza memerlukan penyelesaian yang berbeza. Pendekatan "satu-saiz-sesuai-semua" tidak berfungsi. Dalam tutorial dua bahagian ini, saya akan:

    Gambaran keseluruhan kelebihan dan kekurangan skim siri dan deserialization yang paling berjaya
  • tunjukkan cara menggunakannya
  • menyediakan garis panduan untuk memilih antara kes penggunaan tertentu
Running Contoh

Di bahagian berikut, kami akan bersiri dan menghilangkan graf objek Python yang sama dengan menggunakan serializers yang berbeza. Untuk mengelakkan pertindihan, mari kita tentukan graf objek ini di sini.

Diagram Objek Mudah

Grafik objek mudah adalah kamus yang mengandungi senarai bilangan bulat, rentetan, nombor titik terapung, objek boolean dan datetime, serta contoh kelas yang ditentukan oleh pengguna dengan kaedah pembuangan, beban, dan dump () yang dapat bersiri ke fail terbuka (objek seperti fail).

    Kaedah
  1. beban () deserializes dari objek seperti fail terbuka.

  2. TypeError: seperti berikut: `` ` Traceback (panggilan yang paling baru -baru ini):


    fail "bersiri.py", baris 49, dalam
    cetak (json.dumps (kompleks)
    encode (obj) fail "/usr/lib/python3.8/json/encoder.py", garis 199, dalam encode
    chunks = self.iterencode (o, _one_shot = true)
    file "/usr/lib/python3.8/json/encoder.py" anak lelaki/encoder.py ", baris 179, secara lalai
    menaikkan typeError (f'object jenis {o. Class
    . Nama
    } '
    TypeError: Object type A bukanlah JSON Serializable

    <code>
    哇!这看起来一点也不好。发生了什么?错误消息是 JSONEncoder 类使用的 default() 方法在 JSON 编码器遇到无法序列化的对象时调用的。
    
    自定义编码器的任务是将其转换为 JSON 编码器能够编码的 Python 对象图。在本例中,我们有两个需要特殊编码的对象:A 类。以下编码器可以完成这项工作。每个特殊对象都转换为“\_\_A\_\_”和 pprint 函数的 load() 和 object_hook 参数,允许您提供自定义函数来将字典转换为对象。
    </code>

    def decode_object (o):
    if ' a ' dalam o:
    a = a ()
    '


    deserialized = json.loads (bersiri, object_hook = decode_object) cetak (deserialized)
    cetak: {'a': & lt; 0)}
    deserialized == Complex

Atas ialah kandungan terperinci Serialization dan deserialisasi objek python: Bahagian 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Membina chatbots dengan pythonArtikel seterusnya:Membina chatbots dengan python