前言
哈嘍, 大家好, 我是了不起!
歡迎大家來(lái)觀看了不起的冒險(xiǎn)之旅. 為了方便起見(jiàn), 文中以小知為名. 講述了不起在Python異世界的冒險(xiǎn)之旅.
天空之城是座高聳云端的城堡. 位于西海岸附近, 在城堡的最頂端可以眺望到天空之海. 直到格蘭之森那場(chǎng)大火的發(fā)生,使得圍繞在它周圍的魔法陣力量減弱,人們才終于重新看到天空之城的真實(shí)模樣. 當(dāng)時(shí),關(guān)于天界的傳聞甚至比天上的繁星還多,但是卻沒(méi)有一個(gè)人能夠證明它真實(shí)存在。
實(shí)例對(duì)象和類對(duì)象創(chuàng)建過(guò)程內(nèi)存分析
我們以下面代碼為例,分析整個(gè)創(chuàng)建過(guò)程:
classStudent:
company="sxd"#類屬性
count=0#類屬性
def__init__(self,name,score):
self.name=name#實(shí)例屬性
self.score=score
Student.count=Student.count+1
defsay_score(self):#實(shí)例方法
print("我的公司是:",Student.company)
print(self.name,"的分?jǐn)?shù)是:",self.score)
s1=Student("時(shí)間靜止",18)#s1是實(shí)例對(duì)象,自動(dòng)調(diào)用__init__()方法
s2=Student("不是簡(jiǎn)史",81)
s1.say_score()
print('一共創(chuàng)建{0}個(gè)Student對(duì)象'.format(Student.count))
print("s1的引用:",id(s1))
print("s2的引用:",id(s2))
print("Student的引用:",id(Student))

默認(rèn)的類方法
init構(gòu)造方法和__new__ 方法
初始化對(duì)象, 我們需要定義構(gòu)造函數(shù)
__init__()
方法 構(gòu)造方法用于執(zhí)行“實(shí)例對(duì)象的初始化工作”, 即對(duì)象創(chuàng)建后, 初始化當(dāng)前對(duì)象的相關(guān)屬性, 無(wú)返回值 如果將對(duì)象比作一座房子, 則構(gòu)造方法(__init__)
是負(fù)責(zé)初始化(裝修) , 不是建對(duì)象(房子)
__init__()
的要點(diǎn)如下(約等于Java的構(gòu)造方法):
-
名稱固定, 必須為:
__init__()
-
第一個(gè)參數(shù)固定, 必須為:
self
.self
指的就是剛剛創(chuàng)建好的實(shí)例對(duì)象 -
構(gòu)造函數(shù)通常用來(lái)初始化實(shí)例對(duì)象的實(shí)例屬性 通過(guò)“
類名(參數(shù)列表)
”來(lái)調(diào)用構(gòu)造函數(shù). 調(diào)用后, 將創(chuàng)建好的對(duì)象返回給相應(yīng)的變量. 比如:s1 = Student("時(shí)間靜止", 80)
-
__init__()
方法: 初始化創(chuàng)建好的對(duì)象,初始化指的是: "給實(shí)例屬性賦值" -
如果我們不定義
__init__
方法, 系統(tǒng)會(huì)提供一個(gè)默認(rèn)的__init__
方法. 如果我們定義了帶參的__init__
方法, 系統(tǒng)不創(chuàng)建默認(rèn)的__init__
方法 -
__new__()
方法: 用于創(chuàng)建對(duì)象, 但我們一般無(wú)需重定義該方法
注意:
- Python中的 self 相當(dāng)于C++中的 self指針 , JAVA和C#中的 this 關(guān)鍵字
- Python中, self 必須為構(gòu)造函數(shù)的第一個(gè)參數(shù), 名字可以任意修改, 但一般都叫做 self.他的作用是指向當(dāng)前對(duì)象的本身/當(dāng)前對(duì)象的引用
__del__方法(析構(gòu)函數(shù))和垃圾回收機(jī)制
__del__()
稱為“析構(gòu)方法”, 用于實(shí)現(xiàn)對(duì)象被銷毀時(shí)所需的操作. 比如: 釋放對(duì)象占用的資源, 例如: 打開(kāi)的文件資源、網(wǎng)絡(luò)連接等
注意:
-
Python實(shí)現(xiàn)自動(dòng)的垃圾回收, 當(dāng)對(duì)象沒(méi)有被引用時(shí)(引用計(jì)數(shù)為0), 由垃圾回收器調(diào)用
__del__()
-
我們也可以通過(guò) del語(yǔ)句 刪除對(duì)象, 從而保證調(diào)用
__del__()
-
系統(tǒng)會(huì)自動(dòng)提供
__del__
方法 , 一般不需要自定義析構(gòu)方法.
實(shí)操代碼
classPerson:
def__del__(self):
print("銷毀對(duì)象:{0}".format(self))
p1=Person()
p2=Person()
delp2
print("程序結(jié)束")
-
代碼
+關(guān)注
關(guān)注
30文章
4891瀏覽量
70309 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86287
發(fā)布評(píng)論請(qǐng)先 登錄
Python的面向對(duì)象編程詳解

labview面向對(duì)象編程
3分鐘看懂Python面向對(duì)象
LabVIEW面向對(duì)象的ActorFramework(1)
面向對(duì)象編程及其三大特性 精選資料分享
談?wù)?b class='flag-5'>面向對(duì)象編程
網(wǎng)絡(luò)講壇:面向對(duì)象的編程(上)-labview視頻教程
這可能是Python面向對(duì)象編程的最佳實(shí)踐
利用Python和PyTorch處理面向對(duì)象的數(shù)據(jù)集
利用 Python 和 PyTorch 處理面向對(duì)象的數(shù)據(jù)集(2)) :創(chuàng)建數(shù)據(jù)集對(duì)象

面向過(guò)程與面向對(duì)象的區(qū)別

評(píng)論