學習高級語言,大家都會學習到繼承,複合。對於繼承,最大的優勢是實現了接口和多態。
對於通過繼承實現的接口部分。 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個告訴編譯器申明的優勢。讓代碼更簡介。(寫不好也會增加複雜度 )