学习高级语言,大家都会学习到继承,复合。对于继承,最大的优势是实现了接口和多态。
对于通过继承实现的接口部分。 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个告诉编译器申明的优势。让代码更简介。(写不好也会增加复杂度 )