面向?qū)ο箢?
定義類
在python中,將具有相同屬性和方法的對象歸為一個類,在使用類之前,首先得創(chuàng)建類
類創(chuàng)建的語法:
class 類名:
語句
類的用法
類只有在實(shí)例化才能使用,類的調(diào)用和函數(shù)的調(diào)用差不多,用類名()就可以實(shí)例化類
類對象
類實(shí)例化就生成了一個對象,它支持兩種操作
- 屬性的引用
- 實(shí)例化
類方法
定義類的方法和定義函數(shù)差不多,區(qū)別如下:
- 方法的第一個參數(shù)必須是self,而且不能省略
- 方法的調(diào)用必須先實(shí)例化該類,用實(shí)例名.方法名(參數(shù))來調(diào)用
構(gòu)造方法
構(gòu)造函數(shù)就是類實(shí)例化初始化數(shù)據(jù), init ()方法就是構(gòu)造方法
class person:
"""人類"""
def __init__(self,name,age):
"""初始化名字和年齡"""
self.name=name
self.age=age
def talking(self):
print(self.name.title()+"叫了你一聲")
def playball(self):
print(str(self.age)+"的"+self.name+"正在打球")
類可以創(chuàng)建多個實(shí)例,通過
實(shí)例名=類()
來創(chuàng)建的,類就是一個抽象的具有相同屬性,功能的模板,可以創(chuàng)建很多實(shí)例
私有方法
python中私有屬性,方法,完全取決于它的名字,名字
以__開始
的就是私有屬性或者方法,當(dāng)類的內(nèi)部調(diào)用用
.
來調(diào)用私有屬性
私有函數(shù),屬性,方法有以下特點(diǎn):
-
私有函數(shù)不可以被它的
模塊外部調(diào)用
-
私有方法不能從
類的外部
調(diào)用 -
私有屬性不能從
類的外部被訪問
析構(gòu)方法
python中析構(gòu)方法是__del__(),當(dāng)調(diào)用del()內(nèi)置對象刪除是會調(diào)用它本身的析構(gòu)函數(shù)__del__(),當(dāng)某個對象調(diào)用完畢后,也會調(diào)用一次析構(gòu)函數(shù)來釋放資源,例如:下面是我對堆和棧的理解,再加上類的析構(gòu)函數(shù),
希望多多指教
小朋友手上只能抓住三個氣球,他拿著三個氣球。氣球本身就是一個對象,而手上的線就是對象的引用,當(dāng)小朋友放開手中的線,那么對象就沒有得到引用,氣球就飛掉了,就是小朋友手中少抓了一個氣球,小朋友可以輕松一點(diǎn),也就是我們說的釋放資源,自己調(diào)用了__del__()對象
靜態(tài)方法和類方法
- 實(shí)例方法:隱含調(diào)用的參數(shù)是類的實(shí)例
-
類方法:隱含調(diào)用的參數(shù)是類,定義類方法使用
裝飾器@classmethod
必須有默認(rèn)參數(shù)cls -
靜態(tài)方法:沒有隱含調(diào)用參數(shù),定義靜態(tài)方法使用
修飾符@staticmethod
進(jìn)行修飾,沒有默認(rèn)參數(shù)
在調(diào)用類方法和靜態(tài)方法時,可以使用
類名進(jìn)行調(diào)用
,在調(diào)用前無須實(shí)例化,也
可以通過實(shí)例來進(jìn)行調(diào)用
類的專有方法
- new ():是在實(shí)例創(chuàng)建之前被調(diào)用的,用于創(chuàng)建實(shí)例
- init ():構(gòu)造函數(shù),在生成實(shí)例之后調(diào)用
- del ():析構(gòu)函數(shù),在釋放資源時調(diào)用
- repr ():打印,轉(zhuǎn)換
- setitem ():按照索引賦值
- getitem ():按照索引獲取值
- len ():獲得長度
- cmp ():比較運(yùn)算
- call ():函數(shù)調(diào)用
- add ():加運(yùn)算
- sub ():減運(yùn)算
- mul ():乘運(yùn)算
- div ():除運(yùn)算
- mod ():求余運(yùn)算
- pow ():乘法
類屬性
在類中將屬性分為實(shí)例屬性和類屬性
- 實(shí)例屬性:同一個類的不同實(shí)例,值沒有關(guān)聯(lián),使用self.屬性定義和調(diào)用
-
類屬性:
同一個類所有實(shí)例共用的
,在類中獨(dú)立定義,使用類名.類變量名引用,只要一個實(shí)例發(fā)生改變其他實(shí)例也會發(fā)生改變
修改屬性值
python中有兩種方法來修改屬性值:
-
直接通過實(shí)例來修改
實(shí)例.屬性=值
-
通過自定義方法修改
通過自定義更新值,自定義增加值來修改值
私有屬性
私有屬性通過__屬性名定義的,只能類內(nèi)部訪問,類外部訪問會提示找不到相關(guān)屬性或者方法
嚴(yán)格意義上來說在類的外面也可以調(diào)用私有屬性,只是難以處理,python中沒有真正的私有
繼承
類的繼承是新建的類獲取已有的類的屬性,方法,變量等,繼承的類可以稱為派生類或者子類,被繼承的類稱為基類或者父類
定義子類
class 子類(父類):
語句
多繼承
子類可以獲取父類的特性,子類可以繼承多個父類用
,
隔開,比如父類的方法名一樣,那么按順序繼承
子類調(diào)用父類的方法可以用super()函數(shù)
多繼承
class 子類(父類,父類):
語句
子類方法:
super().方法
子類也可以定義自己的屬性和方法,子類也可以被繼承,父類的私有屬性和方法不能被繼承,但是可以被子類重寫
class a:
def __init()__(self,name):
self.__name=”小包“
self.age=18
class b(a):
def sayname(self):
print (self.__name)
X=b()
X.sayname()
方法重寫
就是方法名和父類的方法名一樣,就可以把父類的方法改成子類的方法
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
