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
- c/c++ 標準順序容器 容器的訪問,刪除 操作C++
- python的順序程式設計Python程式設計
- python 包引入順序Python
- python-reversed返回順序反轉後的迭代器Python
- Jetpack Compose的Modifier順序問題Jetpack
- Python 模組的載入順序Python
- python-reverse順序反轉Python
- python描述器介紹Python
- CSS 選擇器的優先順序CSS
- 移動端順序問題上
- mysql order by 和 group by 順序問題MySql
- 【廖雪峰python入門筆記】list_倒序訪問Python筆記
- 聊聊如何讓springboot攔截器的執行順序按我們想要的順序執行Spring Boot
- MySQL:讀取my.cnf的順序問題MySql
- SQL語句中的AND和OR執行順序問題SQL
- Python例項屬性的優先順序分析Python
- css 選擇器優先順序CSS
- Python中按字母順序對列表排序Python排序
- python if語句有先後順序嗎Python
- Python 運算子優先順序 運算子Python
- python:LEGB識別符號解析順序Python符號
- python的描述符(器)是如何工作的?Python
- FrameLayout裡有CardView造成的顯示順序問題View
- 順序表
- SQL中rownum和order by的執行順序的問題SQL
- mac 上的 python 查詢 dylib 的順序是什麼?MacPython
- Linux排程器:程序優先順序Linux
- 第2章 順序表及其順序儲存
- 介紹python中運算子優先順序Python
- python pandasDataframe按指定index名或columns名(行名或列名)順序修改輸出內容的排列順序PythonIndex
- CSS入門十二:選擇器的優先順序CSS
- 真正理解"CSS選擇器的優先順序"CSS
- 順序表的學習
- 順序表的實現
- pipeline的執行順序