深入学习Django源码基础2 - python多态技巧-运行时判断函数

来源:互联网 发布:淘宝店铺装修布局 编辑:程序博客网 时间:2024/05/20 03:05

学习高级语言,大家都会学习到继承,复合。对于继承,最大的优势是实现了接口和多态。

对于通过继承实现的接口部分。         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个告诉编译器申明的优势。让代码更简介。(写不好也会增加复杂度 )