重用現有類的功能,並在此基礎上進行擴充套件。子類直接具有父類的成員(共性),還可以擴充套件新功能。
耦合度高,父類的變化直接影響子類。
父類相對於子類更抽象,範圍更寬泛;子類相對於父類更具體,範圍更狹小。
# 父類
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 ...