__getattr__,__getattribute__和__get__的區別
阿新 • • 發佈:2019-01-20
color class delattr 失敗 col 指定 嘗試 del 多個 。
dir(object) 列出對象的大多數屬性
getattr(object, name) 從object對象中獲取name字符串指定的屬性
hasattr(object, name) 如果object對象中存在指定的屬性, 或者能以某種方式通過object 對象獲取指定的屬性, 返回True
setattr(object, name, value) 把object對象指定屬性的值設為value, 可能會創建一個新屬性, 或者覆蓋現有的屬性
getattr(obj, ‘attr‘) 以及obj.attr 和hasattr(obj, ‘attr‘)都會觸發__getattribute__(obj, ‘attr‘) 方法, 只有當嘗試獲取指定的屬性失敗,搜索過obj, class和超類之後調用__getattr__
del obj.attr 觸發Class.__delattr__(obj, ‘attr‘)方法
dir(obj)觸發__dir__(obj)方法
setattr(obj, name, value) 或則通過obj.attr 設置對象屬性時會調用__setattr__(self, name, value)
描述符是對多個屬性運用相同存取邏輯的一種方式。
描述符是實現了特定協議的類, 這個協議包括__get__, __set__和__delete__方法
__getattr__,__getattribute__和__get__的區別