溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python類命名空間是什么

發(fā)布時(shí)間:2020-09-08 09:44:36 來源:億速云 閱讀:103 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)Python類命名空間是什么的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

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ì)。

例如,如下程序測試了類命名空間:

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)代碼所示。

感謝各位的閱讀!關(guān)于Python類命名空間是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI