深入學習Django源碼基礎2 - python多態技巧-運行時判斷函數

學習高級語言,大家都會學習到繼承,複合。對於繼承,最大的優勢是實現了接口和多態。

對於通過繼承實現的接口部分。         C++多重繼承 實現解耦,mvc分離         這裏有示例。

多態部分其他語言都有講解。

今天發現1個python實現多態的優勢。


相比較java,c++的多態,需要繼承的方法在基類必須定義以後,才能編譯通過。(吐槽一下,大部分C++和java代碼是告訴編譯器如何理解代碼,構建代碼)

但是python的代碼是動態的,代碼也是數據,數據又不需要申明,運行時判斷的。也就是說,調用方法可以不需要申明。


命令行演示代碼如下


>>> class Base(object):
...     def __init__(self, name):
...             self.name = name
...     def printname(self):
...             print self.function(), self.name
... 
>>> class Sub1(Base):
...     def __init__(self):
...             super(Sub1, self).__init__('Sub1')
...     def function(self):
...             return 'sub1 function'
... 
>>> sub = Sub1()
>>> sub.printname()
sub1 function Sub1



其中在Base的printname中,self.function在基類並沒有實現。



理解起來,這比其他編譯型語言少了1個告訴編譯器申明的優勢。讓代碼更簡介。(寫不好也會增加複雜度 )

發佈了104 篇原創文章 · 獲贊 8 · 訪問量 61萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章