多型鴨子型別
獲取物件資訊(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
typeprint
(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 私有的,類的內...