Python中關(guān)于面向?qū)ο蟾拍畹脑敿?xì)講解
面向?qū)ο缶幊痰?個(gè)非常重要的概念:
類和對(duì)象
對(duì)象是面向?qū)ο缶幊痰暮诵?,在使用?duì)象的過(guò)程中,為了將具有共同特征和行為的一組對(duì)象抽象定義,提出了另外一個(gè)新的概念——類。
類用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。對(duì)象是類的實(shí)例。
類是由三部分構(gòu)成:
類的名稱
類的屬性
類的方法
格式如下:
# 類名 class Func(object): # 類的屬性 i=123 # 類的方法 def f(self): print('6666') # 實(shí)例化類 a=Func() # 訪問(wèn)類的屬性 print(a.i) # 調(diào)用類的方法 a.f()
object 是Python 里所有類的最頂級(jí)父類;
類名 的命名規(guī)則按照"大駝峰命名法";
f 是一個(gè)實(shí)例方法,第一個(gè)參數(shù)一般是self,表示實(shí)例對(duì)象本身,當(dāng)然了可以將self換為其它的名字,其作用是一個(gè)變量 這個(gè)變量指向了實(shí)例對(duì)象
魔法方法
1.init
Python 的類里提供的,兩個(gè)下劃線開(kāi)始,兩個(gè)下劃線結(jié)束的方法,就是魔法方法,init()就是一個(gè)魔法方法,通常用來(lái)做屬性初始化 或 賦值 操作(作用)。
如果類面沒(méi)有寫__init__方法,Python會(huì)自動(dòng)創(chuàng)建,但是不執(zhí)行任何操作
如果為了能夠在完成自己想要的功能,可以自己定義__init__方法
所以一個(gè)類里無(wú)論自己是否編寫__init__方法 一定有__init__方法
案例:
# 類名 class Func(object): def __init__(self,name,age): self.name=name self.age=age # 類的屬性 i=123 # 類的方法 def f(self): print('我的名字叫%s,今年%d歲了'%(self.name,self.age)) # 實(shí)例化類 a=Func('大飛',24) # 訪問(wèn)類的屬性 print(a.i) # 調(diào)用類的方法 a.f()
init(self)中,默認(rèn)有1個(gè)參數(shù)名字為self,如果在創(chuàng)建對(duì)象時(shí)傳遞了2個(gè)實(shí)參,那么__init__(self)中出了self作為第一個(gè)形參外還需要2個(gè)形參,例如__init__(self,x,y)
注意:
1). 在類內(nèi)部獲取 屬性 和 實(shí)例方法,通過(guò)self獲?。?br />
2). 在類外部獲取 屬性 和 實(shí)例方法,通過(guò)對(duì)象名獲取。
3). 如果一個(gè)類有多個(gè)對(duì)象,每個(gè)對(duì)象的屬性是各自保存的,都有各自獨(dú)立的地址;
4). 但是實(shí)例方法是所有對(duì)象共享的,只占用一份內(nèi)存空間。類會(huì)通過(guò)self來(lái)判斷是哪個(gè)對(duì)象調(diào)用了實(shí)例方法。
2.str
str 如果一個(gè)類中定義了__str__方法,在打印對(duì)象時(shí),默認(rèn)輸出該方法的返回值,沒(méi)有定義會(huì)返回對(duì)象的地址
class Func(object): def __init__(self,name,age): self.name=name self.age=age a=Func('大飛',24) print(a)
調(diào)用__str__方法,輸出結(jié)果是該方法的返回值
class Func(object): def __init__(self,name,age): self.name=name self.age=age def __str__(self): return '我的名字叫%s,今年%d歲了'%(self.name,self.age) a=Func('大飛',24) print(a)
總結(jié):實(shí)例化對(duì)象時(shí)會(huì)調(diào)用__str__()方法,如果沒(méi)有定義__str__()方法會(huì)打印一個(gè)對(duì)象的地址,如果定義__str__()并且有返回值,就會(huì)打印其中的返回值
3.del
當(dāng)刪除對(duì)象時(shí),python解釋器會(huì)默認(rèn)調(diào)用一個(gè)方法,這個(gè)方法為_(kāi)_del__()方法
class Dog(object): def __init__(self,name): self.name =name print("__init__方法被調(diào)用") def __del__(self): print("__del__方法被調(diào)用") print("python解釋器開(kāi)始回收%s對(duì)象了" % self.name) p = Dog('Bob') del p
到此這篇關(guān)于Python中關(guān)于面向?qū)ο蟾拍畹脑敿?xì)講解的文章就介紹到這了,更多相關(guān)Python 面向?qū)ο?內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python在TXT文件中按照某一字符串取出該字符串所在的行方法
今天小編就為大家分享一篇python在TXT文件中按照某一字符串取出該字符串所在的行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12詳解Python常用標(biāo)準(zhǔn)庫(kù)之os模塊與shutil模塊
os系統(tǒng)模塊與shutil文件操作模塊是Python常用的標(biāo)準(zhǔn)庫(kù),本文將通過(guò)示例詳細(xì)講解一下二者的使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06python實(shí)現(xiàn)在遍歷列表時(shí),直接對(duì)dict元素增加字段的方法
今天小編就為大家分享一篇python實(shí)現(xiàn)在遍歷列表時(shí),直接對(duì)dict元素增加字段的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python的GUI編程之Pack、Place、Grid的區(qū)別說(shuō)明
這篇文章主要介紹了Python的GUI編程之Pack、Place、Grid的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06簡(jiǎn)單的Python的curses庫(kù)使用教程
這篇文章主要介紹了簡(jiǎn)單的Python的curses庫(kù)使用教程,來(lái)自IBM官方開(kāi)發(fā)者技術(shù)文檔,需要的朋友可以參考下2015-04-04簡(jiǎn)單了解python shutil模塊原理及使用方法
這篇文章主要介紹了簡(jiǎn)單了解python shutil模塊原理及使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例
本文主要介紹了Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Python用imghdr模塊識(shí)別圖片格式實(shí)例解析
這篇文章主要介紹了Python用imghdr模塊識(shí)別圖片格式實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python+OpenCV 圖像邊緣檢測(cè)四種實(shí)現(xiàn)方法
本文主要介紹了通過(guò)OpenCV中Sobel算子、Schaar算子、Laplacian算子以及Canny分別實(shí)現(xiàn)圖像邊緣檢測(cè)并總結(jié)了四者的優(yōu)缺點(diǎn),感興趣的同學(xué)可以參考一下2021-11-11