国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

python屬性查找

2019-11-14 17:41:12
字體:
來源:轉載
供稿:網友

python中執行obj.attr時,將調用特殊方法obj.__getattribute__('attr'),該方法執行搜索來查找該屬性,通常涉及檢查特性、查找實例字典、查找類字典以及搜索基類。如果搜索過程失敗,最終會嘗試調用類的__getattr__()方法。如果這也失敗,則拋出AttributeError異常。

具體步驟如下:

1.如果attr是個特殊屬性(例如python提供的),直接返回。

2.在obj.__class__.__dict__即類字典中查找attr,如果attr是個data描述符,則返回數據描述符的__get__方法結果。如果沒有,則繼續在obj.__class__的基類中尋找data描述符。注意要確定為data描述符,只實現了__get__方法的non-data描述符優先級是在后面的。

3.在obj.__dict__即實例字典中查找,找到就直接返回。如果是obj是一個類,依次在obj和它的基類的__dict__中查找,如果找到一個descriptor就返回descriptor的__get__方法的結果,否則直接返回attr。如果沒有找到,進行下一步。

4.在obj.__class__.__dict__即類字典中查找,如果找到了一個non-data描述符,則返回描述符的__get__方法的結果。如果找到一個普通屬性,直接返回屬性值。在obj基類中執行同樣的查找。

5.Raise AttributeError

總體上,先檢查對象的數據描述符,然后檢查實例字典,在檢查類和基類的非數據描述符,最后是類字典和基類的字典。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 秦安县| 广水市| 朔州市| 开江县| 蒙阴县| 明光市| 巢湖市| 涞水县| 都匀市| 西丰县| 西充县| 岢岚县| 莫力| 西安市| 阜平县| 和田市| 黄大仙区| 长海县| 西乌| 西林县| 遂平县| 安新县| 固镇县| 哈巴河县| 拉萨市| 乌拉特后旗| 建宁县| 赤峰市| 三明市| 青岛市| 封开县| 宜宾市| 恩平市| 潮州市| 桦甸市| 宜黄县| 霍山县| 福州市| 丽水市| 韶山市| 江阴市|