用于不可变结构化数据(包括代数数据类型)的代码生成器,以及用于对其进行解构的函数。

structured-data的Python项目详细描述


我应该用这个吗?

直到有一个主要版本出来,可能不会。

标准库中有几种替代方案可能更适合特定的用例:

  • namedtuple工厂创建具有单一结构的元组类;typing.namedtuple类提供包含类型信息的能力。这个接口有点笨拙,这些值很容易暴露它们的元组特性。(注意:在python 3.8中,对namedtuple成员的快速访问意味着它们绕过了用户定义的 \u getitem\uuu 方法,从而允许工厂用户自定义索引而不破坏属性访问。它看起来仍然依赖于各种方便方法的迭代行为。)
  • 枚举模块提供创建有限枚举的基类。与namedtuple不同,必须在类定义中选择将值转换为基础类型的能力。
  • dataclasses模块提供了一个类装饰器,它可以将一个类转换成一个具有单一结构的类,类似于namedtuple,但是具有更多的定制:默认情况下,实例是可变的,并且可以生成公共协议的实现。
  • 结构化数据装饰器的灵感来自于数据类的设计。(之前的一次尝试使用的是受 enum模块启发的元类,这是一场噩梦。)与 enum 不同的是,它不需要预先定义所有实例;相反,每个类都使用一系列类型定义构造函数,这最终决定了构造函数采用的参数数量。与 namedtuple dataclasses 不同,它允许实例具有多个具有自己类型签名的形状。与使用常规类不同,形状集是预先指定的。
  • 如果您想要多个形状,并且不想提前指定它们,那么您最好的选择可能是一个普通的类树,其中叶类是 dataclasses

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

推荐PyPI第三方库


热门话题
用Java将dpi元数据写入jpeg图像   文件为什么Java会自动解码URI编码的文件名中的%2F?   java多动态时间事件侦听器   java中如何递归查找不同级别的属性值   java Apache Spark MySQL JavaRDD。foreachPartition为什么我得到ClassNotFoundException   Java中的循环变量文件名   java如何参数化调用JNA库的C库名称和路径?   swing如何使gif在Java中运行一次并停止?   Big Sur上的MacOS应用程序,具有java子进程和可访问性API权限   在page类中定义的java Webelement在测试类中不可访问   如何使用java if else从JSON文件中删除重复的元素?   java Android studio dalvik vm找不到类   java在数组中正确使用协方差