新聞中心
Python的類就像命名空間。Python程序默認(rèn)處于全局命名空間內(nèi),類體則處于類命名空間內(nèi),Python 允許在全局范圍內(nèi)放置可執(zhí)行代碼,當(dāng) Python 執(zhí)行該程序時(shí),這些代碼就會(huì)獲得執(zhí)行的機(jī)會(huì)。類似地,Python同樣允許在類范圍內(nèi)放置可執(zhí)行代碼,當(dāng) Python 執(zhí)行該類定義肘,這些代碼同樣會(huì)獲得執(zhí)行的機(jī)會(huì)。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的咸陽網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
例如,如下程序測(cè)試了類命名空間:
class Item:
# 直接在類空間中放置執(zhí)行性質(zhì)代碼
print('正在定義Item類')
for i in range(10):
if i % 2 == 0 :
print('偶數(shù):', i)
else:
print('奇數(shù):', i)正如從上面代碼所看到的,程序直接在 Item 類體中放置普通的輸出語句、循環(huán)語句、分支語句,這都是合法的。當(dāng)程序執(zhí)行 Item 類時(shí),Item 類命名空間中的這些代碼都會(huì)被執(zhí)行。
從執(zhí)行效果來看,這些可執(zhí)行代碼被放在 Python 類命名空間與全局空間并沒有太大的區(qū)別。確實(shí)如此,這是因?yàn)槌绦虿]有定義“成員”(變量或函數(shù)),這些代碼執(zhí)行之后就完了,不會(huì)留下什么。
但下面代碼就有區(qū)別。下面代碼示范了在全局空間和類命名空間內(nèi)分別定義 lambda 表達(dá)式:
global_fn = lambda p: print('執(zhí)行l(wèi)ambda表達(dá)式,p參數(shù): ', p)
class Category:
cate_fn = lambda p: print('執(zhí)行l(wèi)ambda表達(dá)式,p參數(shù): ', p)
# 調(diào)用全局范圍內(nèi)的global_fn,為參數(shù)p傳入?yún)?shù)值
global_fn('fkit') # ①
c = Category()
# 調(diào)用類命名空間內(nèi)的cate_fn,Python自動(dòng)綁定第一個(gè)參數(shù)
c.cate_fn() # ②上面程序分別在全局空間、類命名空間內(nèi)定義了兩個(gè) lambda 表達(dá)式,在全局空間內(nèi)定義的 lambda 表達(dá)式就相當(dāng)于一個(gè)普通函數(shù),因此程序使用調(diào)用函數(shù)的方式來調(diào)用該 lambda 表達(dá)式,并顯式地為第一個(gè)參數(shù)綁定參數(shù)值,如上面程序中 ① 號(hào)代碼所示。
對(duì)于在類命名空間內(nèi)定義的 lambda 表達(dá)式,則相當(dāng)于在該類命名空間中定義了一個(gè)函數(shù),這個(gè)函數(shù)就變成了實(shí)例方法,因此程序必須使用調(diào)用方法的方式來調(diào)用該 lambda 表達(dá)式,Python 同樣會(huì)為該方法的第二個(gè)參數(shù)(相當(dāng)于 self 參數(shù))綁定參數(shù)值,如上面程序中 ② 號(hào)代碼所示。
標(biāo)題名稱:創(chuàng)新互聯(lián)Python教程:淺談Python類命名空間
網(wǎng)頁路徑:http://fisionsoft.com.cn/article/cdipiho.html


咨詢
建站咨詢
