久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python3.7新特性

 flyk0tcfb46p9f 2018-12-09

介紹

Python 3.7 中有一個(gè)新特性, 你可以使用一個(gè)裝飾器 @dataclass來(lái)簡(jiǎn)化創(chuàng)建數(shù)據(jù)類的過(guò)程,,新創(chuàng)建的數(shù)據(jù)類將自帶有__init____repr__,。

數(shù)據(jù)類是一種用來(lái)存儲(chǔ)數(shù)據(jù)的類,這種類往往不需要自定義的方法,。通常,,我們也管它叫數(shù)據(jù)結(jié)構(gòu)。例如,,一個(gè)存儲(chǔ)點(diǎn)的三維坐標(biāo)值的類,,往往就只需要三個(gè)字段 (x, y, z)。

然而,,如果我們用以前的方式實(shí)現(xiàn)一個(gè)數(shù)據(jù)類,,那我們不可避免地需要自己編寫一個(gè)__init__方法,一個(gè)字符串表示的內(nèi)置方法,,和一個(gè)比較函數(shù)等等,。這些方法的邏輯顯而易見(jiàn),如果語(yǔ)言能夠自動(dòng)地處理,,那就再好不過(guò)了,。

事實(shí)上,其他一些語(yǔ)言,,如 Kotlin,,已經(jīng)提供了構(gòu)建數(shù)據(jù)類的便捷方式,,Java也可以通過(guò)Lombok庫(kù)來(lái)使用 @Data標(biāo)記構(gòu)建數(shù)據(jù)類。

例子

這里是使用dataclass的一個(gè)例子

默認(rèn)情況下,,裝飾器會(huì)自動(dòng)生成初始化函數(shù),、比較函數(shù)和字符串表示函數(shù)。

換言之,,上面代碼等同于下面的舊式代碼:

注意這個(gè)例子也可以使用 namedtuple完成,,但是實(shí)現(xiàn)的代碼可讀性就差了很多,雖然確實(shí)比上面例子更短了:

DATACLASS參數(shù)

@dataclass裝飾器可以接受幾個(gè)參數(shù)來(lái)控制自動(dòng)生成的方法的行為:

  • init: 如果 True, 生成__init__方法,。

  • repr: 如果 True, 生成__repr__方法,。

  • eq: 如果 True, 生成__eq__方法,比較邏輯就是把數(shù)據(jù)當(dāng)作一個(gè)元組來(lái)比較,。

  • order: 如果 True, 生成__lt__,__le__,__gt__, 和__ge__方法,。

  • unsafe_hash: 如果 False, 依據(jù)eqfrozen的值生成__hash__方法。 如果 True,,生成__hash__方法,。

  • frozen: 如果 True, 生成的對(duì)象就是不可變的 (只讀).

字段配置

dataclasses模塊中, 有一個(gè)field函數(shù),它可以用來(lái)做字段級(jí)別的配置:

通過(guò)它你可以控制一個(gè)字段的默認(rèn)值, 該字段是否應(yīng)該顯示在 __repr__中,,是否應(yīng)該被比較函數(shù)忽略,,是否應(yīng)該計(jì)算在__hash__中, 等等。

初始化后處理

生成的 __init__代碼會(huì)調(diào)用一個(gè)叫__post_init__的函數(shù),。 如果你需要依據(jù)基礎(chǔ)數(shù)據(jù)生成一些衍生數(shù)據(jù),,那么這個(gè)函數(shù)會(huì)很有用。 注意如果__init__方法沒(méi)有生成, 那么__post_init__也不會(huì)執(zhí)行,。

其他DATACLASS方法

dataclasses 模塊還提供了很多其他的有用的函數(shù):

  • fields: 返回Field對(duì)象的元組,。 一個(gè)Field對(duì)象包含一個(gè)字段的配置。

  • asdict: 將數(shù)據(jù)類實(shí)例轉(zhuǎn)換為對(duì)應(yīng)字段的字典,。

  • astuple: 將數(shù)據(jù)類實(shí)例轉(zhuǎn)換為對(duì)應(yīng)字段的元組,。

  • make_dataclass: 動(dòng)態(tài)創(chuàng)建一個(gè)數(shù)據(jù)類。

  • replace: 拷貝數(shù)據(jù)類實(shí)例,,并修改部分字段,。

  • is_dataclass: 判斷一個(gè)對(duì)象是否是指定數(shù)據(jù)類的對(duì)象。

英文原文:https://www./playgrounds/37245/python-dataclass 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多