Python做爲一門面對對象的語言,那麼確定也是有多態這個屬性的,這裏主要跟C++的多態作一下類比ide
先看下面的代碼函數
這裏能夠看到,Child,Child2都是Parent的子類,他們分別重寫了父類的print_func函數,所以能夠看到下面的結果學習
這是單獨打印每一個對象來獲得的結果,下面開始看Python的多態spa
這裏能夠看到,print_who這個函數只是將obj對象的print_func函數調用打印了一下。這裏和C++的多態都是區別不大的。對象
可是Python的多態比C++的更要牛逼一些,好比下面這個類blog
這時候noChild這個類跟Parent沒有半點關係,那麼咱們調用print_who還能打印出來東西嗎?圖片
沒錯,你真的沒有看出,這個非子類的對象,只是由於有一個print_func函數,就能經過print_who來進行打印,是否是很神奇??it
這就是Python與C++在多態上最大的區別,Python只要你有如出一轍的函數存在,那麼他就能夠按照多態的處理方式來給你處理。在有些書中,這個方法被稱爲「鴨子模型」。
class
歡迎添加QQ羣一塊兒學習
方法