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.sattr.ibattrsattribdefinefrozenfield 感到困惑,请前往 核心API中的名称(On The Core API Names) 进行简短的解释,或者选择性地了解一下它们的历史。

面向企业的 attrs

可作为 Tidelift 订阅服务 的一部分提供。

attrs 的维护者与数千个其他包的开发者正在与 Tidelift 合作,为你在构建应用程序时使用的开源包提供商业支持和维护。 节省时间,降低风险,改善代码健康,同时为你实际使用的包的维护者提供报酬。


完整目录

Full Index