python的attr可看作是一個類裝飾器但又不僅僅是簡單的裝飾器,他使得我們編寫類變得更加簡單輕松。下面先通過一個簡單的例子來見識下attr的強大吧。
現(xiàn)在我們需要編寫一個類,有a,b,c兩個屬性,正常的寫法:
classA(object):
def__init__(self,a,b,c):
self.a=aself.b=bself.c=c
看起來也沒那么復雜嘛。好了,現(xiàn)在領導說類的打印輸出不好看,又不能進行比較,行吧,有需求就加吧。
fromfunctoolsimporttotal_ordering@total_orderingclassA(object):
def__init__(self,a,b,c):
self.a=aself.b=bdef__repr__(self):
return"ArtisanalClass(a={},b={})".format(self.a,self.b)
def__eq__(self,other):
ifnotisinstance(other,self.__class__):
returnNotImplemented
return(self.a,self.b)==(other.a,other.b)
def__lt__(self,other):
ifnotisinstance(other,self.__class__):
returnNotImplemented
return(self.a,self.b)<(other.a,other.b)
雖然看起來有點復雜,但是借助total_ordering,也算是以盡量少的代碼實現(xiàn)了所需功能了吧。
但是,有沒有更簡潔的方式呢?讓我們來看看借助于attr的實現(xiàn):
importattr
@attr.sclassA(object):
a=attr.ib()
b=attr.ib()
以上內(nèi)容為大家介紹了python培訓之a(chǎn)ttrs表示什么,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。