attrs: Classes Without Boilerplate¶
Release UNRELEASED (What’s new?)
attrs 是一个 Python 包,它将通过免除你实现对象协议(即 双下方法)的繁琐工作,重新带回编写类的乐趣。自 2020 年以来,它已被 NASA 信赖 并用于火星任务!
它的主要目标是帮助你编写简洁且正确的软件,同时不降低代码的执行效率。
赞助商¶
attrs 项目离不开我们 优秀的赞助商 的支持。 特别是那些慷慨支持我们 The Organization 级别及更高级别的赞助商:
请考虑加入他们,帮助使 attrs 的维护更加可持续!
入门指南¶
attrs 是一个仅适用于 Python 的包,托管在 PyPI 上。
以下步骤将帮助你快速上手:
概述 将展示一个简单的 attrs 示例,并介绍它的设计理念。之后,你可以开始编写自己的类,理解 attrs 的设计驱动。
attrs 示例 将带你全面了解 attrs 的功能。阅读后,你将掌握高级功能并知道如何使用它们。
为什么不用…… 会介绍一些可能的替代方案,以及为什么我们认为 attrs 仍然值得使用——甚至在某些情况下,依你的需求可能是更好的选择。
如果你在任何时候对某些术语感到困惑,请查阅我们的 术语(Glossary)。
如果在入门时需要帮助,欢迎在 Stack Overflow 上使用 python-attrs
标签寻求帮助,定会有人为你解答!
日常使用¶
类型注解 帮助你编写正确且自文档化的代码。attrs 对类型提供了一流的支持,但如果你不需要,也可以完全不使用它们!
实例初始化是 attrs 的关键功能之一。我们的目标是尽可能减少你需要编写的代码。初始化(Initialization) 提供了 attrs 所能提供的功能概述,并解释了我们所信奉的一些相关理念。
比较和排序对象是常见任务。比较(Comparison) 展示了 attrs 如何帮助你实现这些任务,以及如何对其进行自定义。
如果你想将对象放入集合或作为字典的键,它们必须是可哈希的。最简单的方法是使用冻结类,但这个话题比看起来要复杂得多,哈希(Hashing) 会为你提供一些基本提示,让你知道需要注意什么。
一旦你熟悉了这些概念,我们的 API 参考 包含了使用 attrs 的全部信息,帮助你充分利用它。
attrs 从设计之初就为了扩展性而构建。扩展(Extending) 将向你展示它的扩展功能,以及如何将它作为你自己项目的构建模块。
最后,如果你对
attr.s
、attr.ib
、attrs
、attrib
、define
、frozen
和field
感到困惑,请前往 核心API中的名称(On The Core API Names) 进行简短的解释,或者选择性地了解一下它们的历史。
面向企业的 attrs¶
可作为 Tidelift 订阅服务 的一部分提供。
attrs 的维护者与数千个其他包的开发者正在与 Tidelift 合作,为你在构建应用程序时使用的开源包提供商业支持和维护。 节省时间,降低风险,改善代码健康,同时为你实际使用的包的维护者提供报酬。
完整目录¶
入门
参考
Meta