基于属性的类的二进制序列化程序

attrs2bin的Python项目详细描述


属性2 bin

attrs2bin是一个Python库,它允许您将基于^{}的类序列化/反序列化到字节流或从字节流反序列化。{或者将它反序列化到另一个Python对象中,这样就可以通过一个与它兼容的字节流来传输它。它还可以从套接字反序列化对象(见下文)。在

示例

attrs2bin只提供两个简单的函数:serialize(),它接受一个对象并返回一个字节流,deserialize(),它接受一个字节流和一个基于{}的类并返回一个对象。在

import attrs2bin

@attr.s(auto_attribs=True)
class Sprite:
    name: str
    x: int
    y: int

my_sprite = Sprite("My sprite", 35, 70)
serialized = attrs2bin.serialize(my_sprite)
deserialized = attrs2bin.deserialize(serialized, Sprite)
assert my_sprite == deserialized

什么可以序列化?在

任何基于attrs的类的对象都可以序列化,只要它们的所有字段都有一个类型(使用类型注释或attr.ib(type=...))。attrs2bin为以下类型提供了序列化程序:

  • int
  • float
  • bytes
  • str
  • bool

通过创建实现attrs2bin.interfaces.ITypeSerializer的类并调用attrs2bin.register_serializer(),可以为特定类型创建并注册自己的序列化程序。在

从套接字反序列化

您可以使用deserialize(bytes, cls),而不是deserialize_from_socket(sck, cls),它将从套接字读取必要的字节并返回一个Python对象。sck必须是实现attrs2bin.interfaces.IReadableSocket的任何对象。在

铁锈相容性

attrs2bin附带的序列化程序都与Rust的^{}库兼容。在枕头下面放上下表,以便在Python和Rust之间创建兼容类型:

Python typeRust type
^{} / ^{}^{}
^{}^{}
^{} / ^{}^{}
^{}^{}
^{}^{}
^{}^{}
^{}^{}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java置换相关算法   在Java中读取/打开文本文件   java为什么这段代码不适用于CodeEval?   java如何将日历转换为JSON   从txt文件中读取字符串并将其存储到java中的字符数组中   字符编码Java ResourceBundles umlauts搞砸了   java为什么hashmap会根据总大小而不是填充的存储桶调整大小   java如何将Excel单元格中的数字字符串读取为字符串(而不是数字)?   java Guava的LocalCache无法使用,为什么?   java有没有办法强制JVM在单个处理器或内核上运行   java Eclipse不安装软件   将字节转换为java字符串(可能是汉字)   Java正则表达式:提取函数名   JavaTestNG:如何从多个类中指定测试方法顺序?