代碼看起來(lái)沒(méi)有問(wèn)題。如果在python3上不能用,應(yīng)該也只需要小小的調(diào)整。原則上應(yīng)該跑得通。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了繁昌免費(fèi)建站歡迎大家使用!
不過(guò)話(huà)說(shuō)回來(lái),這樣的技巧通常在python里用不上。因?yàn)閜ython的強(qiáng)大并不是因?yàn)樗拿嫦驅(qū)ο髮傩浴?/p>
而且這些寫(xiě)代碼的可讀性也較差。 python的強(qiáng)大在于它通用,它與C的良好結(jié)合,最重要的是它是“腳本”。 可以動(dòng)態(tài)的做任何事情,既然它的動(dòng)態(tài)很強(qiáng)大,你就不需要寫(xiě)這樣的代碼。
直接這樣
s1= AnyClass()
s1.any_variable = some_value
這樣足夠了。因?yàn)閜ython可以自動(dòng)給未知的變量,增加一個(gè)內(nèi)部屬性。所以我經(jīng)常寫(xiě)下面的這樣的代碼
class?Config:
pass
conf?=?Config()
conf.mysql_ip?=?"127.0.0.1"
這樣就可以了
1.self.__class__
self是當(dāng)前,類(lèi)的實(shí)例的變量,self.__class__用于獲得對(duì)應(yīng)的類(lèi)的本身的變量。
2.前面通過(guò)
class Circle:
定義而來(lái)一個(gè)類(lèi),叫做Circle
其中,定義了類(lèi)的變量:
all_circles = []
表示是:一個(gè)名叫all_circles的列表,并且初始化賦值為[],表示一個(gè)空的列表。
3.all__這是什么用法?
是你看錯(cuò)了。
實(shí)際是:
all_circles
這是一個(gè)單個(gè)的變量而已;
這個(gè)變量,是之前類(lèi)Circle中的變量all_circles。
關(guān)于這部分內(nèi)容,建議你去看看我所總結(jié)的:
【整理】Python中:self和init__的含義 + 為何要有self和__init__
和
【整理】Python中變量的作用域(variable scope)
就懂了。
里面有截圖解釋的,便于你理解。
(此處不給貼地址,請(qǐng)自己用google搜標(biāo)題,即可找到帖子地址)
腳本初加載時(shí),python會(huì)順序執(zhí)行所有可以執(zhí)行的東西。 如果是函數(shù)與類(lèi)定義,它就順序?qū)⒍x放到全局表里。
這里全局變最也是一樣。python從import語(yǔ)句開(kāi)始執(zhí)行,執(zhí)行到這句話(huà)today 就被初始化了。
如果這個(gè)模塊被其它模塊import ,那個(gè)在import 的時(shí)候, today會(huì)被加載。
不過(guò)跨模塊的全局變量,在python里有些古怪。要小心使用。