1.__del__方法:
a:構造方法:建立乙個空間, 析構方法;釋放乙個空間;
b:觸發del的情況:python直譯器的垃圾**機制,和遇到 del 物件名
c:析構方法的思想:
classa:
def__del__
(self):
(self)
a =a()
del a #
這裡先執行了__del__方法,再刪除物件a,因為執行__del__方法時還要傳入self;
(a)#
輸出結果:
<__main__.a object at 0x0000013cf5f59128> 被執行了
traceback (most recent call last):
file
"d:/python/course/23.模組/day23/3.析構方法.py
", line 49, in
(a)nameerror: name 'a
'isnot defined
d:python的垃圾**機制:
classa:
def__del__
(self):
print('
python直譯器會在程式跑結束後執行我')
a =a()
(a)#
輸出結果:
<__main__.a object at 0x000001f823159128>python直譯器會在程式跑結束後執行我
總結:del方法:是去歸還/釋放一些在建立物件時借用的一些資源(有可能是作業系統的資源)
例子:像一些常用的變數在python底層的一些物件,都有python直譯器幫你**,
而像一些像作業系統借用的資源就
需要你執行**方法自己釋放;
像檔案控制代碼;執行close操作,還有一些網路資源;
3.計算機內部執行一些小常識:
a:申請一塊空間 作業系統會分配給你的 b:在這一塊空間之內的所有事,歸你的python直譯器管理;
*****所以在你借用了作業系統資源時,在程式結束之前要還回去,在del方法中寫關閉**;
4.item系列:
1)getitem:物件['key']觸發該方法;
classa:
def__getitem__
(self, item):
(item)
return item #
[item]觸發getitem方法
a =a()
print(a['a'
])#輸出結果:
a a
2)getitem和setitem的一些結合應用:
classa:
def__getitem__
(self, item):
return getattr(self,item) #
相當於self.key
def__setitem__
(self, key, value):
setattr(self,key,value)
#相當於self.key = value
a =a()a['
k'] = 'v'
print(a['k'
])class
a:
def__setitem__
(self, key, value):
self.key =value
def__getitem__
(self, item):
return
self.key
a =a()a['
k'] = 'v'
print(a['k'
])#這兩段**的結果一樣都是v,上面用到了對映
5.__hash__方法:
1)底層資料結構基於hash值定址的優化操作
2) hash是乙個演算法,保證不同值的hash結果不一樣的
對同乙個值多次在python直譯器中執行的時候,hash值是不同的
但是對同乙個值,在同一次執行python**的時候hash值永遠不變
3)hash值不是萬能的,有可能兩個值的hash值相同,所以如果在乙個變數進行hash演算法之後發現位址有值,會進行乙個判斷,判斷兩個變數的值是否相等,若相等覆蓋,若不等,則對這個變數再進行二次定址,也遵循乙個演算法;
4)hash和eq(obj) # obj內部必須含有__hash__方法
classa:
def__init__
(self,name):
self.name =name
def__eq__
(self, other):
if self.name ==other.name:
return
true
a = a('s'
)b = a('s'
)c = a('s'
)print(a == b ==c)
#輸出結果
true
::::::==觸發物件中的eq方法
Python02 1 什麼是資料
x 10,10是我們要儲存的資料 資料是用來表示狀態的,不同的狀態就應該用不同的型別的資料去表示 作用 年紀,等級,身份證號,qq號等整型數字相關 定義 age 10 本質age int 10 在python2中 32位電腦取值範圍 2 31 1 2 31 1 64位電腦取值範圍 2 63 1 2 ...
小甲魚python021課後題
請使用lambda表示式將下邊函式轉變為匿名函式?def fun a x,y 3 return x yanswer lambda x,y 3 x y 請將下邊的匿名函式轉變為普通的屌絲函式?lambda x x if x 2 else noneanswer def fun x if x 2 retu...
python 內建 Python內建方法大全
新增元素 集合.add 集合.update 一次新增多個值 集合隨機刪除 集合.pop 集合刪除指定元素 集合.remove 沒有找到會奔潰 集合.discard 沒有找到不會奔潰 移除空白 strip 取字串兩邊空格 lstrip 取字串左邊空格 rstrip 取字串右邊空格 括號中可以新增引數指...