您的位置:首页 > 编程语言 > Python开发

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

2013-08-31 00:44 776 查看
学习高级语言,大家都会学习到继承,复合。对于继承,最大的优势是实现了接口和多态。
对于通过继承实现的接口部分。 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个告诉编译器申明的优势。让代码更简介。(写不好也会增加复杂度 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: