Python學習筆記 21

2021-09-20 18:51:38 字數 3575 閱讀 3276

tips:沒有必要的話,多重繼承盡量避免使用

class

animal

:def

run( self )

:print

('動物會跑。'

)def

sleep

( self )

:print

('動物睡覺。'

)# 當前有乙個類,能實現大部分功能,但實現不了全部功能

# 建立乙個新類讓它繼承這個類的屬性和方法

# 在定義類時,可以在括號內指定當前類的父類(又叫超類,基類,super)

# 子類(衍生類)可以直接繼承父類的屬性和方法

# 通過繼承可以避免重複編寫**,並且也符合ocp原則

# 所以我們經常通過繼承對乙個類進行擴充套件

class

dog(animal)

:def

brak

( self )

:print

('狗叫。'

)# def run(self) :

# print('bdog')

d = dog(

)d.run(

)r =

isinstance

(d,dog)

print

(r)r =

isinstance

(d,animal)

print

(r)class

hashiqi

(dog)

:def

sha(self)

:print

('我是哈士奇。'

)print()

# 建立乙個類時,如果省略了父類,則預設父類是object

# object是所有類的父類,所有類都繼承自object

# issubclass(c,b) 檢查c類是不是b類的子類

# isinstance(b,a) 檢查物件b是不是a類的例項,如果a是其類的父類也會返回true

print

(issubclass

(dog,animal)

)print

(issubclass

(hashiqi,animal)

)print

(issubclass

(animal,

object))

print

(isinstance

( d,animal)

)

方法重寫和super( ):

# 如果在子類中有和父類同名的方法,則在呼叫時會呼叫子類中的方法

# 這就是方法的重寫(覆蓋,override)

# 在呼叫方法時,會優先在當前類中去尋找,有則呼叫,

# 沒有就去它的父類中尋找,有則呼叫,沒有就再去它的父類中尋找,

# 以此類推,直到找到object類,如果沒有就報錯

class

animal

:def

run( self )

:print

('動物會跑。'

)def

sleep

( self )

:print

('動物睡覺。'

)class

dog(animal)

:def

brak

( self )

:print

('狗叫。'

)def

run(self)

:print

('dog 跑。'

)d = dog(

)d.run(

)print

(' -'*30

)# super( )

class

animal

:def

__init__

(self,name)

: self._name = name

defrun( self )

:print

('動物會跑。'

)def

sleep

( self )

:print

('動物睡覺。'

) @property

defname

(self)

:return self._name

@name.setter

defname

(self,name)

: self._name = name

class

dog(animal)

:def

__init__

(self,name,age)

:# super( ) 可以用來獲取當前類的父類,

# 並且通過super( ) 呼叫父類的方法是,不需要傳遞self

super()

.__init__(name)

self._age = age

defbrak

( self )

:print

('狗叫。'

) @property

defage

(self)

:return self._age

@age.setter

defage(self,age)

: self._age = age

d = dog(

'小黑',3

)d.age =

4print

( d.name,d.age )

多重繼承:

# python中支援多重繼承,即乙個類可以有多個父類

# 多重繼承會使子類同時擁有多個父類的方法

# 在開發時沒有特殊情況,盡量避免使用多重繼承,多重繼承會使**更複雜

# 如果多個父類中由同名方法,會從前向後查詢,找到即呼叫

# 所以前面的父類的優先順序高

classa(

object):

deftest1

(self)

:print

('aaa'

)classb(

object):

deftest1

(self)

:print

('b中的test1'

)def

test2

(self)

:print

('bbb'

)class

c(a,b)

:def

test3

(self)

:print

('ccc'

)print

(c.__bases__)

# (, )

print

(c.__base__)

# # 類名.__bases__ 可以用來獲得當前類的所有父類

# 類名.__base__ 可以用來獲得當前類的的第乙個父類

c = c(

)c.test1(

)# 呼叫了a父類的test1方法,而沒有呼叫b父類的test1方法

Python學習筆記 21 目錄遍歷

遍歷乙個目錄下所有的資料夾和檔案是非常有用的事情,在python中os模組提供了非常簡單易行的遍歷方法os.walk path 另外一定要了解的一點是,os.walk path 遍歷有點 廣度優先 的意思,也就是說在上乙個os.walk沒執行完之前,再執行os.walk會等待。先看 注意showpa...

學習筆記21 Python 異常

try 嘗試執行的 except 出現錯誤的處理try num int input 請輸入乙個整數 except print 請輸入正確的整數 try 嘗試執行的 pass except 錯誤型別1 針對錯誤型別1,對應的 處理 pass except 錯誤型別2 錯誤型別3 針對錯誤型別2 和 3...

學習筆記2 1

step1 庫函式匯入 基礎函式庫 import numpy as np 匯入畫相簿 import matplotlib.pyplot as plt import seaborn as sns 匯入邏輯回歸模型函式 from sklearn.linear model import logisticr...