nodejs 源
npm --registry=http://registry.npm.taobao.orginstall -d)
pip源
網(wǎng)上有很多可用的源座慰,例如豆瓣:http://pypi.douban.com/simple/
清華:https://pypi.tuna.tsinghua.edu.cn/simple
最近使用得比較多并且比較順手的是清華大學(xué)的pip源左医,它是官網(wǎng)pypi的鏡像,每隔5分鐘同步一次,地址為https://pypi.tuna.tsinghua.edu.cn/simple
臨時(shí)使用:
可以在使用pip的時(shí)候加參數(shù)-ihttps://pypi.tuna.tsinghua.edu.cn/simple
例如:pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simplegevent,這樣就會(huì)從清華這邊的鏡像去安裝gevent庫。
永久修改黍图,一勞永逸:
linux下,修改?~/.pip/pip.conf?(沒有就創(chuàng)建一個(gè))奴烙, 修改?index-url至tuna助被,內(nèi)容如下:
[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple
windows下,直接在user目錄中創(chuàng)建一個(gè)pip目錄切诀,如:C:\Users\xx\pip揩环,新建文件pip.ini,內(nèi)容如下
[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple
super 是用來解決多重繼承問題的幅虑,直接用類名調(diào)用父類方法在使用單繼承的時(shí)候沒問題丰滑,但是如果使用多繼承,會(huì)涉及到查找順序(MRO)倒庵、重復(fù)調(diào)用(鉆石繼承)等種種問題褒墨§潘ⅲ總之前人留下的經(jīng)驗(yàn)就是:保持一致性。要不全部用類名調(diào)用父類郁妈,要不就全部用 super浑玛,不要一半一半。
注意:super繼承只能用于新式類噩咪,用于經(jīng)典類時(shí)就會(huì)報(bào)錯(cuò)顾彰。
新式類:必須有繼承的類,如果沒什么想繼承的剧腻,那就繼承object
經(jīng)典類:沒有父類,如果此時(shí)調(diào)用super就會(huì)出現(xiàn)錯(cuò)誤:『super() argument 1 must be type, not classobj』
super對(duì)象在搜索命名空間時(shí)涂屁,其實(shí)是基于類實(shí)例的mro進(jìn)行书在。那么什么是mro呢?查找官方文檔拆又,有:
PyObject* tp_mro
Tuple containing the expanded set of base types, starting with the type itself and
ending with object, in Method Resolution Order.
This field is not inherited; it is calculated fresh by PyType_Ready().
super并非是一個(gè)函數(shù)儒旬,而是一個(gè)類(PySuper_Type)
Python 會(huì)計(jì)算出一個(gè)方法解析順序(Method Resolution Order, MRO)列表,它代表了類繼承的順序帖族,我們可以使用下面的方式獲得某個(gè)類的 MRO 列表:
super 原理
super的工作原理如下:
def ?super(cls,inst):
? ? ? mro=inst.__class__.mro()
? ? ? ?returnmro[mro.index(cls)+1]
其中栈源,cls 代表類,inst 代表實(shí)例竖般,上面的代碼做了兩件事:
獲取 inst 的 MRO 列表
查找 cls 在當(dāng)前 MRO 列表中的 index, 并返回它的下一個(gè)類甚垦,即 mro[index + 1]
當(dāng)你使用super(cls, inst)時(shí),Python 會(huì)在 inst 的 MRO 列表上搜索 cls 的下一個(gè)類涣雕。
小結(jié)
事實(shí)上艰亮,super和父類沒有實(shí)質(zhì)性的關(guān)聯(lián)。
super(cls, inst)獲得的是 cls 在 inst 的 MRO 列表中的下一個(gè)類挣郭。