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

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如何在数据库中存储工作日数据以及开始时间和结束时间?   mysql Java JPA内部联接查询不起作用   java MQ消息在不同的客户端应用程序中显示不同   javascript如何在xPage上提高typeAhead性能?   java在尝试保存EditText时无法暂停   mongodb“未能使用带参数的构造函数NO_构造函数实例化java.util.List”,   java如何修改使IllegalArgumentException:列“\u id”不存在的游标   转换Android。网Uri到Java。伊奥。输入流   java NetBeans RCP居中弹出窗口无法按预期工作   java将sql开发人员与netbeans连接起来   带有xmldsig签名的java JAXB编组   java ORACLE JDBC批处理执行不会返回受影响行的实际计数   java无法理解如何在由swagger自动生成的jaxrs服务器中访问请求头   java如何处理漏洞CVE20181258,同时将Spring安全版本5与外部客户端(最新版本)一起使用?   JavaSpring数据JPA存储库多租户单模式技术