Python08 類的繼承

2021-10-19 17:56:49 字數 3201 閱讀 6368

重用現有類的功能,並在此基礎上進行擴充套件。子類直接具有父類的成員(共性),還可以擴充套件新功能。

耦合度高,父類的變化直接影響子類。

父類相對於子類更抽象,範圍更寬泛;子類相對於父類更具體,範圍更狹小。

# 父類

class

cat(

object):

def__init__

(self)

: self.color =

'red'

defrun

(self)

:print

("貓咪今天很活潑"

)# 子類

class

cat_son

(cat)

:pass

cat = cat_son(

)print

(cat.color)

cat.run(

)

顯示結果:

單繼承是指子類只繼承乙個父類。

# 建立乙個人類

class

person

(object):

def__init__

(self)

:# 例項屬性

self.name =

'張三'

# 例項方法

defexam

(self)

:print

(self.name+

"今天在考試!"

)# 建立student類,繼承person類,person類是父類,student類是子類

class

student

(person)

:# 子類可以繼承父類中的所有的方法和屬性,即使子類沒有自己的方法和屬性

pass

# 常見子類的例項化物件

s1 = student(

)# 子類直接使用父類的方法

s1.exam(

)# 子類直接使用父類的屬性

print

(s1.name)

顯示結果:

釋義:雖然子類沒有定義__init__方法初始化屬性,也沒有定義例項方法,但是父類有,所以建立子類的物件,就預設執行了那個繼承過來的__init__方法。

子類在繼承的時候,當定義類是,小括號()中為父類的名字。

父類的屬性,方法會被繼承給子類。

多繼承是指乙個子類繼承兩個或者兩個以上的基類,父類中的屬性和方法同時被子類繼承下來。

# father 父類

class

father

(object):

defhobby

(self)

:print

("我喜歡玩電腦遊戲"

)def

cook

(self)

:print

("我不喜歡做飯"

)# mother 父類

class

mother

(object):

defcook

(self)

:print

("我喜歡做飯"

)def

hobby

(self)

:print

("我不喜歡玩電腦遊戲"

)## 多繼承,同事繼承father父類與mother父類

class

son(father,mother)

:pass

# 建立例項化物件

son = son(

)# 呼叫父類的hobby方法

son.hobby(

)# 呼叫父類的cook方法

son.cook(

)# 子類的魔法屬性__mro__決定了屬性和方法的執行順序

print

(son.__mro__)

顯示結果:

釋義:多繼承可以繼承多個父類,即可以繼承所有父類的屬性和方法。

如果多個父類中有同名的屬性和方法,即預設使用第乙個父類的屬性和方法(根據類的魔法屬性mro的順序來查詢)。

多個父類中,不重名的屬性和方法不會有任何影響。

如果子類和父類的方法名和屬性名相同,則預設使用子類的。

# father 父類

class

father

(object):

def__init__

(self)

: self.age =

30def

hobby

(self)

:print

("我喜歡玩電腦遊戲"

)def

cook

(self)

:print

("我不喜歡做飯"

)# mother 父類

class

mother

(object):

def__init__

(self)

: self.age =

29def

cook

(self)

:print

("我喜歡做飯"

)def

hobby

(self)

:print

("我不喜歡玩電腦遊戲"

)## 多繼承,同事繼承father父類與mother父類

class

son(father,mother)

:def

__init__

(self)

: self.age =

13def

hobby

(self)

:print

("我喜歡玩電子遊戲--子類中的"

)def

cook

(self)

:print

("我喜歡做飯--子類中的"

)# 建立例項化物件

son = son(

)# 如果子類和父類的方法名和屬性名相同,則預設使用子類的

print

(son.age)

son.hobby(

)son.cook(

)# 子類的魔法屬性__mro__決定了屬性和方法的執行順序

print

(son.__mro__)

顯示結果:

python08 檔案操作

檔案 1.唯讀 r,rb rb是讀位元組 2.只寫 w,wb 清除之前的東西,重新寫進去內容。3.追加 a,ab 表示寫東西 4.r 讀寫 5.w 寫讀 6.a 寫讀 追加寫讀 我們使用open 函式來開啟乙個檔案,獲取到檔案控制代碼,然後通過檔案控制代碼就可以進行各種各樣的操作了。根據開啟方式的不...

Python08檔案的使用

a open 檔名 開啟模式 編碼方式 編碼方式 utf 8預設可以忽略 開啟模式 讀a.read size 讀入前size的長度 a.readline size 讀入一行,的前size的長度 a.readlines hint 讀入所有行,以行形成列表,的前hint的長度 寫a.write s 寫入...

python 08 可變和不可變型別

不可變型別,記憶體中的資料不允許被修改 可變型別,記憶體中的資料可以被修改 a 1 a hello a 1,2,3 a 3,2,1 demo list 1,2,3 print 定義列表後的記憶體位址 d id demo list demo list.pop 0 demo list.remove 2 ...