python描述器的訪問順序
本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。
1、順序說明
資料描述器 > 例項屬性 > 非資料描述器;例項屬性 > 類屬性。
當存在描述器的時候,一個類例項的查詢屬性順序為:先查詢類或父類中是否有資料描述器屬性,如果有那麼,先訪問資料描述器,如果沒有資料描述器 --> 那麼就會查詢自己例項的dict屬性,如果dict屬性裡面也沒有找到 --> 然後會在類或父類的非資料描述器進行查詢。
2、例項
# 例子二 class A: def __init__(self): self.x = 1 def __get__(self, instance, owner): """ 以下兩個引數都是「必須引數」,約定使用 instance: 描述器所在類的例項 owner:呼叫描述器的類 """ return self.x def __set__(self, instance, value): """ 以下兩個引數都是「必須引數」,約定使用 instance: 描述器所在類的例項 value:用來設定屬性的值 """ self.x = value def __delete__(self, instance): """ 以下引數是「必須引數」,約定使用 instance: 描述器所在類的例項 """ pass class B: def __init__(self): self.x = 1 def __get__(self, instance, owner): return self.x class C: a = A() b = B() def __init__(self, a, b): self.b = a self.b = b
上面在class C中,分別定義了資料描述器和非資料描述器a,b以及同名的例項屬性,進行以下輸出測試,發現例項c只存在例項屬性b,不存在例項屬性a,說明其確實是被資料描述器,即類屬性a給遮蔽了。
以上就是python描述器的訪問順序,大家如果怕記憶混淆,可以記得資料訪問器在最前面就行了。對於訪問順序的理解,大家不妨執行例項程式碼測試。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4479/viewspace-2830806/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++ 順序容器中訪問元素C++
- python教程:屬性查詢順序,資料描述符Python
- Python 中的屬性訪問與描述符Python
- python運算子及優先順序順序Python
- c/c++ 標準順序容器 容器的訪問,刪除 操作C++
- CAS (4) —— CAS瀏覽器SSO訪問順序圖詳解(CAS Web Flow Diagram by Example)瀏覽器Web
- python 包引入順序Python
- python的順序程式設計Python程式設計
- Python 模組的載入順序Python
- CAS (6) —— Nginx代理模式下瀏覽器訪問CAS伺服器網路順序圖詳解Nginx模式瀏覽器伺服器
- Git diff hash順序的問題Git
- 加hint改變執行計劃訪問順序優化sql優化SQL
- Python的方法解析順序(MRO)[轉]Python
- Python順序集合之 tuplePython
- Python順序集合之 ListPython
- Jetpack Compose的Modifier順序問題Jetpack
- css選擇器的優先順序CSS
- css選擇器順序的小技巧CSS
- CSS 選擇器的優先順序CSS
- 無順序約束的字串匹配問題字串匹配
- mysql order by 和 group by 順序問題MySql
- Java 修飾符順序問題Java 修飾符
- python描述器介紹Python
- sql中的or與and的執行順序問題SQL
- 列定義的順序和列儲存的順序
- css 選擇器優先順序CSS
- [20120120]startup nomount訪問引數檔案的順序.txt
- MySQL:讀取my.cnf的順序問題MySql
- SQL語句中的AND和OR執行順序問題SQL
- MYSQL INNODB中表資料的返回順序問題MySql
- UITableView停止載入中的動畫的順序問題UIView動畫
- 關於defer執行順序問題
- 系統觸發器的應用順序(四)觸發器
- 系統觸發器的應用順序(三)觸發器
- 系統觸發器的應用順序(二)觸發器
- 系統觸發器的應用順序(一)觸發器
- Python 黑魔法 --- 描述器(descriptor)Python
- 聊聊如何讓springboot攔截器的執行順序按我們想要的順序執行Spring Boot