??????? Python作為一門面對對象的語言,那么肯定也是有多態這個屬性的,這里主要跟C++的多態做一下類比
????????先看下面的代碼
??????????????????????
????????
這里可以看到,Child,Child2都是Parent的子類,他們分別重寫了父類的print_func函數,因此可以看到下面的結果
????????這是單獨打印每個對象來得到的結果,下面開始看Python的多態
????????這里可以看到,print_who這個函數只是將obj對象的print_func函數調用打印了一下。這里和C++的多態都是區別不大的。
????????但是Python的多態比C++的更要牛逼一些,比如下面這個類
????????這時候noChild這個類跟Parent沒有半點關系,那么我們調用print_who還能打印出來東西嗎?
??????? ?沒錯,你真的沒有看出,這個非子類的對象,只是因為有一個print_func函數,就能通過print_who來進行打印,是不是很神奇??
????????這就是Python與C++在多態上最大的區別,Python只要你有一模一樣的函數存在,那么他就可以按照多態的處理方式來給你處理。在有些書中,這個方法被稱為“鴨子模型”。
歡迎添加QQ群一起學習
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
