python中魔術方法簡述

魔術方法:***
python中魔術方法簡述
實例化:
new :
實例化一個對象 方法很少使用,一般使用return super().))new(cls)基類ibject方法來創建實例並返回。

hash:
返回一個整數,如果定義這個方法該類的實例就可hash。
eq:
對應==操作符,判斷2個對象是否相等,返回bool值。
hash方法只是返回一個hash值作爲set的key,但是去重,還需要eq來判斷2個對象是否相等。只是hash衝突,不能說明兩個對象是相等的。因此,一般來說提供hash方法是爲了作爲set或者dict的key,所以去重要同時提供eq方法。
如果一個類不能hash,就把hash設置爲None。

bool

python中魔術方法簡述

可視化:
python中魔術方法簡述

運算符重載:
python中魔術方法簡述
python中魔術方法簡述

容器相關方法:

python中魔術方法簡述
python中魔術方法簡述

可調用對象:
python中一切皆對象,函數也不例外。
call類中定義一個該方法,實例就可以像函數一樣被調用。
python中魔術方法簡述

上下文管理:
python中魔術方法簡述

實例化對象時,並不會調用enter進入with語句塊調用enter方法,然後執行語句塊,最後離開時,調用exit方法。
enter方法返回值就是上下文中使用的對象,with語法會把它的返回值賦予as字句的變量。
python中魔術方法簡述
python中魔術方法簡述

反射:
運行時,區別於編譯時,指的是程序被加載到內存中執行的時候。
reflection,指的是運行時獲取類型定義信息。
簡單說,再Python中,能夠通過一個對象,找出其type,class,attribute,method的能力。
具有反射能力的函數有:type(),isinstance(),callable(),dir(),getattr()
python中魔術方法簡述
python中魔術方法簡述
python中魔術方法簡述
python中魔術方法簡述

delattr():
可以阻止通過實例刪除屬性的操作,但是通過類依然可以刪除屬性。

getattribute:
除非明確知道用該方法做什麼,不然少用。
python中魔術方法簡述

描述器 Descriptors:
所用魔術方法:get(),set(),delete()
python中魔術方法簡述
python中魔術方法簡述

x= A()時,A已經產生了實例,則init已運行。
python中魔術方法簡述

運行結果來看,只有類屬性是類的實例才行。
python中魔術方法簡述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章