python物件導向(繼承,多型)

2021-10-22 20:36:27 字數 2353 閱讀 2002

多型鴨子型別

獲取物件資訊(type,isinstance,dir)

定義

class

animal

(object):

#定義乙個名為animal的基類

defrun

(self)

:print

('動物可以跑'

)class

dog(animal)

:#定義乙個名為dog的子類

pass

class

cat(animal)

:#定義乙個名為cat的子類

pass

dogobj = dog(

)catobj = cat(

)dogobj.run(

)catobj.run(

)# 結果

動物可以跑

動物可以跑

子類指定呼叫父類的方法

多繼承

class

baseclass1()

:def

fun(self)

:print

('這是基類1中的方法'

)class

baseclass2()

:def

fun(self)

:print

('這是基類2中的方法'

)class

subclass

(baseclass1, baseclass2)

:#繼承順序為baseclass1, baseclass2

pass

subclassobj =subclass(

)subclassobj.fun(

)#baseclass1, baseclass2都有fun()方法,但是subclass沒有進行重寫,所以會呼叫 #baseclass1中的fun方法

# 結果

這是基類1中的方法

方法重寫
class

animal

(object):

# 定義乙個名為animal的基類

defrun

(self)

:print

('動物可以跑'

)class

dog(animal)

:def

run(self)

:print

('這是狗在跑'

)class

cat(animal)

:def

run(self)

:print

('這是貓在跑'

)class

fox(animal)

:def

run(self)

:print

('這是貓在跑'

)dogobj = dog(

)catobj = cat(

)dogobj.run(

)catobj.run(

)# 結果

這是狗在跑

這是貓在跑

進一步理解

含義

class

animal

(object):

# 定義乙個名為animal的基類

defrun

(self)

:print

('動物可以跑'

)def

run_twice

(animal)

: animal.run(

) animal.run(

)class

myclass()

:def

run(self)

:print

('這不是乙個animal的run,這是myclass中的run'

)myclassobj = myclass(

)run_twice(myclassobj)

#myclassobj就像只鴨子,它有run_twice引數中animal的run方法,那麼就執行 #myclass中的run方法

#至於run_twice執行的是不是animal的run不管,只要傳入的引數有run方法就行

# 結果

這不是乙個animal的run,這是myclass中的run

這不是乙個animal的run,這是myclass中的run

type
print

(type

('a'))

# 結果

<

class

'str'

>

isinstance

dir

參考鏈結

python 物件導向 繼承 多型

概念理解 類似於祖輩留下的遺產,父輩可以使用,父輩留下的東西,子輩可以使用,這就是繼承。例如 建立乙個動物類,貓也是乙個動物,所以貓也具有動物的屬性 class animal 定義乙個動物類 def eat self print 吃飯 def drink self print 喝水 貓也是乙個動物,...

Python物件導向 繼承和多型

繼承class animal object def run self print animal is running.class dog animal pass class cat animal pass dog run cat run 執行結果 animal is running.an anima...

物件導向 封裝 繼承 多型

物件導向 封裝 繼承 多型物件導向 封裝 一 封裝 private 資料型別 名字 成員變數 public 預設一致 名字 屬性 set 類中不僅可以有成員變數和屬性,還可以有成員方法 訪問修飾符 4個 public 公共的,任何地方都可以訪問,但是需要引用 命名空間 private 私有的,類的內...