Python——多態

        Python作爲一門面對對象的語言,那麼肯定也是有多態這個屬性的,這裏主要跟C++的多態做一下類比

        先看下面的代碼

                       圖片.png        

這裏可以看到,Child,Child2都是Parent的子類,他們分別重寫了父類的print_func函數,因此可以看到下面的結果

圖片.png

圖片.png

        這是單獨打印每個對象來得到的結果,下面開始看Python的多態

圖片.png

圖片.png

圖片.png

        這裏可以看到,print_who這個函數只是將obj對象的print_func函數調用打印了一下。這裏和C++的多態都是區別不大的。

        但是Python的多態比C++的更要牛逼一些,比如下面這個類

圖片.png

        這時候noChild這個類跟Parent沒有半點關係,那麼我們調用print_who還能打印出來東西嗎?

圖片.png

        沒錯,你真的沒有看出,這個非子類的對象,只是因爲有一個print_func函數,就能通過print_who來進行打印,是不是很神奇??

        這就是Python與C++在多態上最大的區別,Python只要你有一模一樣的函數存在,那麼他就可以按照多態的處理方式來給你處理。在有些書中,這個方法被稱爲“鴨子模型”。



歡迎添加QQ羣一起學習

圖片.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章