新聞中心
在我們覆蓋 7 個(gè) PyPI 庫(kù)的系列文章中了解更多解決 Python 問(wèn)題的信息。

創(chuàng)新互聯(lián)建站主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺(jué)設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營(yíng)銷(xiāo)推廣、網(wǎng)站程序開(kāi)發(fā)、HTML5響應(yīng)式重慶網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站制作、微商城、網(wǎng)站托管及網(wǎng)站維護(hù)公司、WEB系統(tǒng)開(kāi)發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為公路鉆孔機(jī)行業(yè)客戶提供了網(wǎng)站改版服務(wù)。
Python是當(dāng)今使用最多流行的編程語(yǔ)言之一,因?yàn)椋核情_(kāi)源的,它具有廣泛的用途(例如 Web 編程、業(yè)務(wù)應(yīng)用、游戲、科學(xué)編程等等),它有一個(gè)充滿活力和專(zhuān)注的社區(qū)支持它。這個(gè)社區(qū)是我們?cè)?Python Package Index(PyPI)中提供如此龐大、多樣化的軟件包的原因,用以擴(kuò)展和改進(jìn) Python。并解決不可避免的問(wèn)題。
在本系列中,我們將介紹七個(gè)可以幫助你解決常見(jiàn) Python 問(wèn)題的 PyPI 庫(kù)。今天,我們將研究 attrs,這是一個(gè)幫助你快速編寫(xiě)簡(jiǎn)潔、正確的代碼的 Python 包。
attrs
如果你已經(jīng)寫(xiě)過(guò)一段時(shí)間的 Python,那么你可能習(xí)慣這樣寫(xiě)代碼:
class Book(object):def __init__(self, isbn, name, author):self.isbn = isbnself.name = nameself.author = author
接著寫(xiě)一個(gè) __repr__ 函數(shù)。否則,很難記錄 Book 的實(shí)例:
def __repr__(self):return f"Book({self.isbn}, {self.name}, {self.author})"
接下來(lái)你會(huì)寫(xiě)一個(gè)好看的 docstring 來(lái)記錄期望的類(lèi)型。但是你注意到你忘了添加 edition 和 published_year 屬性,所以你必須在五個(gè)地方修改它們。
如果你不必這么做如何?
@attr.s(auto_attribs=True)class Book(object):isbn: strname: strauthor: strpublished_year: intedition: int
使用新的類(lèi)型注釋語(yǔ)法注釋類(lèi)型屬性,attrs 會(huì)檢測(cè)注釋并創(chuàng)建一個(gè)類(lèi)。
ISBN 有特定格式。如果我們想強(qiáng)行使用該格式怎么辦?
@attr.s(auto_attribs=True)class Book(object):isbn: str = attr.ib()@isbn.validatordef 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: strauthor: strpublished_year: intedition: int
attrs 庫(kù)也對(duì)不可變式編程支持良好。將***行改成 @attr.s(auto_attribs=True, frozen=True) 意味著 Book 現(xiàn)在是不可變的:嘗試修改一個(gè)屬性將會(huì)引發(fā)一個(gè)異常。相反,比如,如果希望將發(fā)布日期向后一年,我們可以修改成 attr.evolve(old_book, published_year=old_book.published_year+1) 來(lái)得到一個(gè)新的實(shí)例。
本系列的下一篇文章我們將來(lái)看下 singledispatch,一個(gè)能讓你向 Python 庫(kù)添加方法的庫(kù)。
網(wǎng)站欄目:使用attrs來(lái)告別Python中的樣板
當(dāng)前路徑:http://www.5511xx.com/article/cohjshd.html


咨詢
建站咨詢
