成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用attrs來告別Python中的樣板

開發 后端
在本系列中,我們將介紹七個可以幫助你解決常見 Python 問題的 PyPI 庫。今天,我們將研究 attrs,這是一個幫助你快速編寫簡潔、正確的代碼的 Python 包。

[[265757]]

在我們覆蓋 7 個 PyPI 庫的系列文章中了解更多解決 Python 問題的信息。

Python是當今使用最多流行的編程語言之一,因為:它是開源的,它具有廣泛的用途(例如 Web 編程、業務應用、游戲、科學編程等等),它有一個充滿活力和專注的社區支持它。這個社區是我們在 Python Package Index(PyPI)中提供如此龐大、多樣化的軟件包的原因,用以擴展和改進 Python。并解決不可避免的問題。

在本系列中,我們將介紹七個可以幫助你解決常見 Python 問題的 PyPI 庫。今天,我們將研究 attrs,這是一個幫助你快速編寫簡潔、正確的代碼的 Python 包。

attrs

如果你已經寫過一段時間的 Python,那么你可能習慣這樣寫代碼:

  1. class Book(object):
  2.  
  3. def __init__(self, isbn, name, author):
  4. self.isbn = isbn
  5. self.name = name
  6. self.author = author

接著寫一個 __repr__ 函數。否則,很難記錄 Book 的實例:

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

接下來你會寫一個好看的 docstring 來記錄期望的類型。但是你注意到你忘了添加 editionpublished_year 屬性,所以你必須在五個地方修改它們。

如果你不必這么做如何?

  1. @attr.s(auto_attribs=True)
  2. class Book(object):
  3. isbn: str
  4. name: str
  5. author: str
  6. published_year: int
  7. edition: int

使用新的類型注釋語法注釋類型屬性,attrs 會檢測注釋并創建一個類。

ISBN 有特定格式。如果我們想強行使用該格式怎么辦?

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

attrs 庫也對不可變式編程支持良好。將***行改成 @attr.s(auto_attribs=True, frozen=True) 意味著 Book 現在是不可變的:嘗試修改一個屬性將會引發一個異常。相反,比如,如果希望將發布日期向后一年,我們可以修改成 attr.evolve(old_book, published_year=old_book.published_year+1) 來得到一個新的實例。

本系列的下一篇文章我們將來看下 singledispatch,一個能讓你向 Python 庫添加方法的庫。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-09-20 12:21:25

Vue2Vue3$attrs

2025-04-18 04:22:00

2023-07-07 07:43:37

AutoMapper映射庫

2024-11-15 13:15:36

2021-04-09 06:15:54

開源工具Python編程語言

2020-06-29 15:40:53

PlotlyPython數據可視化

2024-06-28 10:29:18

異常處理Python

2025-07-01 02:25:00

2024-12-06 10:12:20

2017-12-19 15:24:21

DjangoPythonOracle

2025-03-24 08:10:00

前端開發JSON5

2017-08-02 07:36:06

大數據PythonOpenCV

2018-05-21 14:44:33

LinuxshellPython

2021-07-02 12:28:37

Python編程語言

2022-06-28 13:41:07

瀏覽網頁互聯網交互Python

2017-07-19 16:02:27

Python數據科學數據分析

2020-10-05 21:38:35

pythonprettyprintpprint

2020-12-03 07:43:03

JS Ajax JavaScript

2012-08-01 14:23:35

IBMdW

2021-06-10 11:05:04

Java編程代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 最新毛片网站 | 99久久99| 亚洲精品美女视频 | 午夜视频在线播放 | 91精品久久久久久综合五月天 | 91精品国产一区二区在线观看 | 亚洲国产免费 | 7777奇米影视| 久久国色 | 欧洲免费视频 | 国产亚洲精品精品国产亚洲综合 | 国产精品久久久久久一区二区三区 | 日韩亚洲欧美一区 | 中文字幕免费 | 毛片网在线观看 | 福利在线看 | 艹逼网 | 亚洲精品视频播放 | 久久99精品视频 | 久久国产精品一区二区三区 | 久久精品小视频 | 美女爽到呻吟久久久久 | 日韩视频1 | 久久国产电影 | 麻豆视频国产在线观看 | 九九热精品免费 | 久久久国产精品一区 | 国产精品不卡一区 | a级片www| 久久精品一 | 天天射夜夜操 | 欧美一区二区三区大片 | 欧一区二区 | 99爱在线视频 | 久久久久久久一区二区三区 | 久草成人 | 国产高潮好爽受不了了夜色 | 奇米四色在线观看 | 久久一二 | 婷婷久久五月天 | 五月婷婷激情网 |