千家信息网

如何使用attrs来告别Python中的样板

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何使用attrs来告别Python中的样板,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在我们覆盖 7 个 PyPI
千家信息网最后更新 2026年11月02日如何使用attrs来告别Python中的样板

如何使用attrs来告别Python中的样板,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

在我们覆盖 7 个 PyPI 库的系列文章中了解更多解决 Python 问题的信息。

Python是当今使用最多流行的编程语言之一,因为:它是开源的,它具有广泛的用途(例如 Web 编程、业务应用、游戏、科学编程等等),它有一个充满活力和专注的社区支持它。这个社区是我们在 Python Package Index(PyPI)中提供如此庞大、多样化的软件包的原因,用以扩展和改进 Python。并解决不可避免的问题。

在本系列中,我们将介绍七个可以帮助你解决常见 Python 问题的 PyPI 库。今天,我们将研究 attrs,这是一个帮助你快速编写简洁、正确的代码的 Python 包。

attrs

如果你已经写过一段时间的 Python,那么你可能习惯这样写代码:

class Book(object):     def __init__(self, isbn, name, author):        self.isbn = isbn        self.name = name        self.author = author

接着写一个 __repr__ 函数。否则,很难记录 Book 的实例:

def __repr__(self):    return f"Book({self.isbn}, {self.name}, {self.author})"

接下来你会写一个好看的 docstring 来记录期望的类型。但是你注意到你忘了添加 edition 和 published_year 属性,所以你必须在五个地方修改它们。

如果你不必这么做如何?

@attr.s(auto_attribs=True)class Book(object):    isbn: str    name: str    author: str    published_year: int    edition: int

使用新的类型注释语法注释类型属性,attrs 会检测注释并创建一个类。

ISBN 有特定格式。如果我们想强行使用该格式怎么办?

@attr.s(auto_attribs=True)class Book(object):    isbn: str = attr.ib()    @isbn.validator    def pattern_match(self, attribute, value):        m = re.match(r"^(\d{3}-)\d{1,3}-\d{2,3}-\d{1,7}-\d$", value)        if not m:            raise ValueError("incorrect format for isbn", value)    name: str     author: str    published_year: int    edition: int

attrs 库也对不可变式编程支持良好。将***行改成 @attr.s(auto_attribs=True, frozen=True) 意味着 Book 现在是不可变的:尝试修改一个属性将会引发一个异常。相反,比如,如果希望将发布日期向后一年,我们可以修改成 attr.evolve(old_book, published_year=old_book.published_year+1) 来得到一个新的实例。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

帮助 编程 属性 注释 类型 问题 支持 代码 实例 文章 更多 格式 社区 可变 样板 好看 清楚 简洁 良好 不可避免 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 互联网科技英文 善班互联网科技有限公司 美国互联网黑科技 北京禾田雨橡互联网科技 伴你行互联网科技有限公司 互联网科技论坛 宁夏科技产业互联网案例 互联网科技商业 成都互联网科技公司工作好不好 互联网科技如何创业 梅州GM互联网络科技有限公司 互联网科技股为什么大涨 萌小萌互联网科技河南有限公司 互联网科技平台产品运营 万物互联网智能科技 中国科技和美国互联网 张家口科技产业互联网平台 青岛易易互联网科技 杭州科技互联网公司有哪些 北京路客互联网科技有限公司 互联网科技公司的优势 互联网科技的未来发展 互联网科技宣传片 新华互联网科技校企合作 科技互联网的核心竞争力 半导体是互联网高科技吗 互联网科技包装股份有限公司上市 信承诺互联网科技有限公司 互联网对科技影响
0