__new__方法 創建實例的方法 __new__方法是在類創建實例的時候自動調用的 實例是通過類裡面的__new__方法創建出來的 先調用__new__方法創建實例,再調用 __init__方法初始化實例 __new__方法,後面括弧里的cls代表的是類本身 必須有返回值 父類名.__new__( ...
- __new__方法的運行順序
- 裝飾器的概念的用法
- 三個內置裝飾器
- 類中屬性的訪問過程
__new__方法
創建實例的方法
__new__方法是在類創建實例的時候自動調用的
實例是通過類裡面的__new__方法創建出來的
先調用__new__方法創建實例,再調用 __init__方法初始化實例
__new__方法,後面括弧里的cls代表的是類本身
必須有返回值 父類名.__new__(cls)
單例模式
創建多個實例的時候,每個實例所指向的記憶體地址不同
單例模式讓多個實例引用的是同一個實例,是一個實例的不同名字,指向同一記憶體地址
定製屬性訪問
就是對類里的屬性進行增刪改查的操作
增
實例名.屬性名=值
setattr(實例名, '屬性名', 值) # 有這個屬性就修改,沒有就增加
實例名.__setattr__('屬性名',值) # 有這個屬性就修改,沒有就增加
刪
只能刪除自己添加的屬性
delattr(實例名, '屬性名')
實例名.__delattr__('屬性名')
del 實例名
改
setattr(實例名, '屬性名', 值) # 有這個屬性就修改,沒有就增加
實例名.__setattr__('屬性名',值) # 有這個屬性就修改,沒有就增加
查
hasattr(實例名, '屬性名') 返回bool值
getattr(實例名, '屬性名') 返回屬性值,不存在則報錯
實例名. __getattribute__('屬性名') 返回屬性值,不存在則報錯
描述符
比較抽象的一個概念,瞭解即可
描述符協議:python描述符是一個“綁定行為”的對象屬性,在描述符協議中,它可以通過方法重寫屬性的訪問
這些方法有 __get__(), __set__(), 和__delete__()
如果這些方法中的任何一個被定義在一個對象中,這個對象就是一個描述符
裝飾器
本質是函數,能夠實現在不修改原來的函數的基礎上添加功能
在閉包的前提下進行裝飾
三個內置裝飾器
@property # 就像和訪問屬性一樣
@staticmethod # 靜態方法,與class類斷開連接
@classmethod # 類方法 cls代表類本身
類裝飾器
類也可以做裝飾器,但是需要定義 __call__ 方法