這篇文章給大家分享的是有關Python類命名空間是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
Python的類就像命名空間。Python程序默認處于全局命名空間內,類體則處于類命名空間內,Python 允許在全局范圍內放置可執行代碼,當 Python 執行該程序時,這些代碼就會獲得執行的機會。類似地,Python同樣允許在類范圍內放置可執行代碼,當 Python 執行該類定義肘,這些代碼同樣會獲得執行的機會。
例如,如下程序測試了類命名空間:
class Item: # 直接在類空間中放置執行性質代碼 print('正在定義Item類') for i in range(10): if i % 2 == 0 : print('偶數:', i) else: print('奇數:', i)
正如從上面代碼所看到的,程序直接在 Item 類體中放置普通的輸出語句、循環語句、分支語句,這都是合法的。當程序執行 Item 類時,Item 類命名空間中的這些代碼都會被執行。
從執行效果來看,這些可執行代碼被放在 Python 類命名空間與全局空間并沒有太大的區別。確實如此,這是因為程序并沒有定義“成員”(變量或函數),這些代碼執行之后就完了,不會留下什么。
但下面代碼就有區別。下面代碼示范了在全局空間和類命名空間內分別定義 lambda 表達式:
global_fn = lambda p: print('執行lambda表達式,p參數: ', p) class Category: cate_fn = lambda p: print('執行lambda表達式,p參數: ', p) # 調用全局范圍內的global_fn,為參數p傳入參數值 global_fn('fkit') # ① c = Category() # 調用類命名空間內的cate_fn,Python自動綁定第一個參數 c.cate_fn() # ②
上面程序分別在全局空間、類命名空間內定義了兩個 lambda 表達式,在全局空間內定義的 lambda 表達式就相當于一個普通函數,因此程序使用調用函數的方式來調用該 lambda 表達式,并顯式地為第一個參數綁定參數值,如上面程序中 ① 號代碼所示。
對于在類命名空間內定義的 lambda 表達式,則相當于在該類命名空間中定義了一個函數,這個函數就變成了實例方法,因此程序必須使用調用方法的方式來調用該 lambda 表達式,Python 同樣會為該方法的第二個參數(相當于 self 參數)綁定參數值,如上面程序中 ② 號代碼所示。
感謝各位的閱讀!關于Python類命名空間是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。