无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Mixin 類到底 Mix 了啥?

2023-07-27 16:32 作者:Mr藍(lán)琿  | 我要投稿

Mixin 是一個(gè)類,不單獨(dú)使用,被用于混(Mix)入(in)到已有的類中,提供額外的方法。


為什么引入 Mixin 類?我認(rèn)為其原因是我們要用一個(gè)已有的類,但是已有的類中又缺少一些方法,我們又不想去過多修改已有的類。怎么辦? 定義一個(gè) Mixin 類,把它混到已有的類中去。分清哪個(gè)是已有的類,哪個(gè)是 Mixin 類,比較重要。


Python 中的 Mixin


在下面的 Python 代碼中, 已有的類是 Name,其只有一個(gè)初始化方法 __init__() 。 如何為 Name 提供比如將名字全部轉(zhuǎn)為大寫或小寫的功能呢? 當(dāng)然可以直接去修改 Name 這個(gè)類,手動(dòng)添加方法。 可是,如果有時(shí)不方便去修改,那么就定義一個(gè) Mixin 類,本例中叫做 MixinClass,讓 Name 繼承它就可以。 當(dāng)然,這里還是小小修改了 Name, 即在 class Name 的后面添加了 (MixinClass)。

上面的類是 Mixin 類,下面的類是已有的類。 注意:MixinClass 沒有初始化方法,但有 self。



JavaScript 中的 Mixin


JavaScript 也允許 Mixin,不過是混入一個(gè)對(duì)象(而非類)。在下面的 JavaScript 代碼中, 通過 Object.assign() 函數(shù)將 mixinObject 對(duì)象中的兩個(gè)方法復(fù)制到 Name.prototype 中,從而使得類 Name 獲得了 allUpperCase() 與 allLowerCase() 方法。


注意:(1)mixinObject 是個(gè)對(duì)象,在 JavaScript 中,對(duì)象的屬性可以是函數(shù),其實(shí) Python 也可以;(2)mixinObject 中有關(guān)鍵字 this。


JavaScript 與 Python 互通互鑒,Nice 。


Mixin 類到底 Mix 了啥?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
海伦市| 宁德市| 洛浦县| 龙里县| 随州市| 白城市| 五华县| 新宾| 巨鹿县| 南陵县| 莱西市| 武鸣县| 甘孜| 石河子市| 沈阳市| 洪洞县| 玉门市| 齐河县| 平遥县| 余庆县| 太和县| 分宜县| 阿图什市| 濮阳市| 黄骅市| 汉阴县| 阜南县| 将乐县| 南华县| 瓦房店市| 永州市| 台北县| 北宁市| 安陆市| 镇坪县| 新巴尔虎右旗| 麻栗坡县| 长海县| 九台市| 昌平区| 同江市|