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

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