類 簡單總結

2022-07-28 03:15:12 字數 3631 閱讀 8472

類的構成

1

class

類名:2

def__init__

(self,引數1,引數2):

3 self.物件的屬性1 =引數1

4 self.物件的屬性2 =引數256

def 方法名(self):pass78

def 方法名2(self):pass

910 物件名 = 類名(1,2) #

物件就是例項,代表乙個具體的東西11#

類名() : 類名+括號就是例項化乙個類,相當於呼叫了__init__方法12#

括號裡傳引數,引數不需要傳self,其他與init中的形參一一對應13#

結果返回乙個物件

14 物件名.物件的屬性1 #

檢視物件的屬性,直接用 物件名.屬性名 即可

15 物件名.方法名() #

呼叫類中的方法,直接用 物件名.方法名() 即可

類的總結

繼承1.繼承是一種建立新類的方式

2.新建的類可以建立乙個或多個父類,父類有稱為基類或者超類

3.新建的類稱為派生類或者子類

在python中類的繼承分為:單繼承或多繼承?1

2345

6789

1011

classparentclass1:#定義父類

pass

classparentclass2:#定義父類

pass

classsubclass1(parentclass1):#單繼承,基類是parentclass1,派生類是subclass

pass

classsubclass2(parentclass1,parentclass2):#python支援多繼承,用逗號分隔開多個繼承的類

pass

4.檢視所有繼承的父類

print(person.__bases__)      #__base __只檢視從左到右繼承的第乙個子類,__bases__則是檢視所有繼承的父類

如果沒有指定父類,python會預設繼承object類,object是所有python的父類。

經典類:在python2中,class dad: 不會繼承object,這樣的類叫做經典類(它叫經典類,不是因為它經典,而是因為它比較老)

新式類:在python3中,python會預設繼承object類(一切皆物件)

class dad  就相當於python2中的  class dad(object)  #新式類

而且python3中沒有經典類了

5.繼承與抽象(先抽象後繼承)

抽象:抽取類似或者說比較像的部分(也就是提取一類事物的特點,範圍越來越大,共性越來越少)

是從大範圍到小範圍的過程

繼承:是基於抽象的過程,通過程式語言去實現它,肯定是先經歷抽象這個過程,才能通過繼承的方式去表達出抽象的結構

是從小範圍到大範圍的過程

鑽石繼承

新式類:廣度優先:橫著找(如鑽石繼承圖,誰先在前面就找誰)

經典類:深度優先:從上到下找

6.派生:(相對論)

1.在父類的基礎上產生子類,產生的子類就叫做派生類

2.父類裡沒有的方法,在子類中有了,這樣的方法就叫做派生方法。

3.父類裡有,子類也有的方法,就叫做方法的重寫(就是把父類裡的方法重寫了)

7.注意的幾個概念:

1.子類可以使用父類的所有屬性和方法

2.如果子類有自己的方法,就執行自己的;如果子類沒有自己的方法,就會找父類的。

3.如果子類裡面沒有找到,父類裡也沒有找到,就會報錯

4.如果子類中實現了呼叫父類的方法

在類內:super(子類,self).方法名()  supper().__init__(引數)

在類外:super(子類名,物件名).方法名()

8、介面類

介面提取了一群類共同的函式,可以把介面當做乙個函式的集合。

然後讓子類去實現介面中的函式。

這麼做的意義在於歸一化,什麼叫歸一化,就是只要是基於同乙個介面實現的類,那麼所有的這些類產生的物件在使用時,從用法上來說都一樣。

歸一化,讓使用者無需關心物件的類是什麼,只需要的知道這些物件都具備某些功能就可以了,這極大地降低了使用者的使用難度。

比如:我們定義乙個動物介面,介面裡定義了有跑、吃、呼吸等介面函式,這樣老鼠的類去實現了該介面,松鼠的類也去實現了該介面,由二者分別產生乙隻老鼠和乙隻松鼠送到你面前,即便是你分別不到底哪只是什麼鼠你肯定知道他倆都會跑,都會吃,都能呼吸。

再比如:我們有乙個汽車介面,裡面定義了汽車所有的功能,然後由本田汽車的類,奧迪汽車的類,大眾汽車的類,他們都實現了汽車介面,這樣就好辦了,大家只需要學會了怎麼開汽車,那麼無論是本田,還是奧迪,還是大眾我們都會開了,開的時候根本無需關心我開的是哪一類車,操作手法(函式呼叫)都一樣

1

借用abc模組來實現介面2#

介面類(就是為了提供標準,約束後面的子類)

3from abc import

abcmeta,abstractmethod

4class payment(metaclass=abcmeta):

5@abstractmethod

6def

pay(self,money):

7pass89

class

wechatpay(payment):

10def

fuqian(self,money):

11'''

實現了pay的功能,但是方法名字不一樣

'''12

print('

'%money)

1314

class

alipay:

15def

pay(self,money):

16print('

支付寶 支付了%s

' %money)

1718

#p = wechatpay() #報錯了(因為上面定義了乙個介面類,介面類裡面19#

定義了乙個pay方法,而在下面的wechatpay方法裡沒有pay方法,不能20#

呼叫,在介面類裡面約束一下,介面類裡的pay方法裡面不能寫其他,直接pass)

21 a =alipay()

22 a.pay(200)

23 p = payment() #

介面類不能被例項化

使用內建模組abc實現介面類

單例模式

類的呼叫

類和物件的簡單總結

類和物件的總結 物件是指任何乙個物體或事物,而類是由相似的特徵和相似的行為的物件的集合 物件的描述是通過其行為 特徵 功能 用途等方面,而類的描述是由屬性 特徵 和方法 行為 組成 類的基本結構是 public class 類名 物件的基本結構 先例項化乙個物件 類名 物件名 new 類名 呼叫方法...

抽象類簡單總結 C

抽象類有點忘了,就網上蒐集了一些,方便下次檢視 1 乙個抽象類中可以同時有抽象方法和非抽象方法,也可以同時有抽象屬性和非抽象屬性,但是,有抽象方法或抽象屬性的類一定是抽象類,抽象類中的抽象屬性和抽象方法必須是公有的,因此必須有public修飾符,因為如果是私有的話子類就不 能訪問,無意義,所以一般情...

類的包含 簡單程式細節總結

這是乙個簡單的類的包含的資料初始化 includeusing namespace std class a 用了初始化列表的形式,注意書寫格式 int a 資料定義成了公有 1 class b 用初始化列表初始化a的資料,aa是物件的名字 2 void out class b 用初始化列表初始化a的資...