1. 程式人生 > >魔術方法-屬性相關

魔術方法-屬性相關

返回 描述符 set bject color 成員 修改 self 使用

屬性相關的魔術方法:
就是獲取成員,刪除成員,修改成員相關聯的魔術方法而已

5個與屬性相關的魔術方法

1.__getattr__
2.__setattr__
3.__delattr__
4.__getattribute__
5.__dir__


屬性訪問的順序!

1.調用__getattribute__
2.【調用數據描述符】
3.調用當前對象的所屬成員
4.調用類的所屬成員
5.【調用非數據描述符】
6.調用父類的所屬成員
7.調用__getattr__

註意:以上步驟是調用某個成員的訪問順序及優先級。前面的能獲取成員,就不會向後查找


1.__getattribute__
觸發時機:訪問對象成員的時候就會觸發,無論成員是否存在
作用:可以在用戶獲取數據的時候進行數據處理等操作
參數:一個self接受當前對象,另外一個參數接受訪問對象成員名稱的字符串
返回值:有 不設定返回None
註意事項:在當前魔術方法中禁止使用 當前對象.成員 的方式訪問成員,會觸發遞歸操作,必須借助object的__getattribute__來獲取當前對象的成員


2.__getattr__
觸發時機:訪問不存在的對象成員的時候自動觸發
作用:防止訪問不存在成員的時候報錯!為不存在的成員定義值
參數:

一個self接受當前對象,第二個參數接受訪問成員的名稱字符串
返回值:可有可無
註意事項:


3.__setattr__
觸發時機:添加對象成員或者修改對象成員的時候自動觸發!
作用:可以限制或者管理對象成員的添加與修改操作
參數:一個self接受當前對象 第二個接受設置的成員名稱字符串 第三個設置的值
返回值:
註意事項:在當前魔術方法中禁止使用當前對象.成員名 = 值的方式,會觸發遞歸cao‘zuo !


4.__delattr__
觸發時機:刪除對象成員的時候自動觸發
作用:可以限制對象成員的刪除
參數:一個self接受當前對象,另外一個接受刪除的成員屬性名稱的字符串

返回值:
註意事項:如果要刪除對象成員,要借助object中的__delattr__來操作。

5.__dir__
觸發時機:使用dir函數操作對象的時候自動觸發
作用:
參數:一個self接受當前對象
返回值:有,必須是容器類數據
註意事項:

魔術方法-屬性相關