面向?qū)ο笕筇匦裕悍庋b,繼承,多態(tài)?
封裝:根據(jù)職責(zé)將屬性和方法封裝到一個抽象的類中
繼承: 實現(xiàn)代碼的重用,相同的代碼不需要重復(fù)的編寫
多態(tài):不同的子類對象調(diào)用相同的父類的方法,產(chǎn)生不同的結(jié)果
兩個重要的概念: 類和對象? ? 類是具有相同特征和行為事物的統(tǒng)稱,具有相似內(nèi)部狀態(tài)和運(yùn)動規(guī)律的實體的集合 。對象是某一具體事物的存在,可以直接使用的。
類由類名,類屬性,類方法三部分構(gòu)成? 定義類時 class 類名(object): 為新式類? 不加object為經(jīng)典類,類名的命名規(guī)則按照“大駝峰”規(guī)則命名,單詞首字母大寫。
對象的格式為: 對象名 = 類名()? ?在創(chuàng)建對象中,? 魔法方法—init—方法是默認(rèn)執(zhí)行的,在init方法中可以直接設(shè)置對象的屬性。
—str—也是魔法方法,它的作用是當(dāng)使用print輸出對象時,只要定義了str方法,那么就會打印從這個方法中return的數(shù)據(jù)。
如果有一個對象,當(dāng)需要對其進(jìn)行修改屬性時,有兩種方法 : 1:對象名.屬性名 = 數(shù)據(jù) (直接修改) 2:對象名.方法名()? ---(間接修改)? ?為了更好的保護(hù)屬性安全 可以將屬性定義為私有屬性,然后添加一個可以調(diào)用的方法供調(diào)用? 注:私有屬性時給屬性前加兩個—
創(chuàng)建對象后,python解釋器默認(rèn)調(diào)用init方法,當(dāng)刪除一個對象時,python解釋器也會默認(rèn)調(diào)用一個方法,這個方法為del()方法, del方法 程序結(jié)束后自動會調(diào)用
單繼承 :在程序中,繼承描述的是事物之間的所屬關(guān)系,在定義類時,第一個類為基類,繼承自object,子類繼承父類時須在變量名后括號里寫上父類名,父類的屬性,方法都會繼承給子類? ?但是注意:不能訪問父類中的私有屬性和方法。
多繼承: 即子類有多個父類,并具有它們的特征 。多繼承是在子類變量名后括號里寫上多個父類名。
重寫: 子類中,有一個和父類相同名字的方法,在子類中的方法會覆蓋掉父類中同名的方法。如果想調(diào)用父類方法就要用到super().函數(shù)
我們通常也會把創(chuàng)建出來的對象叫做類的實例,創(chuàng)建對象的動作叫做實例化。對象的屬性叫做實例屬性,對象調(diào)用的方法叫做實例方法。? 每一個對象都有自己獨立的內(nèi)存空間,保存各自不同的屬性。多個對象的方法,在內(nèi)存中只有一份,在調(diào)用方法時,需要把對象的引用傳遞到方法內(nèi)部。
在python中,類是一個特殊的對象———類對象 類對象在內(nèi)存中只有一份,使用一個類可以創(chuàng)建出很多個對象實例。類對象還擁有自己的屬性和方法:類屬性和類方法。 通過類名.的方式可以訪問類屬性或調(diào)用類方法。
在python中屬性的獲取存在一個向上查找機(jī)制,首先在對象內(nèi)部查找對象屬性,沒有找到就會向上尋找類屬性