深入学习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个告诉编译器申明的优势。让代码更简介。(写不好也会增加复杂度 )
- 深入学习Django源码基础2 - python多态技巧-运行时判断函数
- 深入学习Django源码基础5 - utils中archive技巧
- 深入学习Django源码基础10 - Django中http模块
- 深入学习Django源码基础13 - Django中的中间件(middleware)
- 深入学习Django源码基础1 - 深刻理解Python中的元类(metaclass)
- 深入学习Django源码基础3 - python提供的对象默认方法
- 深入学习Django源码基础4 - python的动态延时加载技术(lazy)
- 深入学习Django源码基础7 - python的gettext国际化本地化
- 深入学习Django源码基础12 - 简要分析Django中template模块2
- 深入学习Django源码基础15 - views简要分析学习
- 深入学习Django源码基础9 - 简单分析DjangoORM部分
- 深入学习Django源码基础16 - django中信号的学习分析
- 深入学习Django源码基础17 - django中messagee分析学习
- 深入学习Django源码基础8 - Django中系统级国际化本地化
- 深入学习Django源码基础11 - 简要分析Django中template模块1
- 深入学习Django源码基础14 - Django中forms简要分析
- Python基础学习-Django基础
- 深入学习Django源码基础6 - utils中dateformat.py学习
- hdu 1421
- Mac OS X 下载
- EditPlus配置技巧
- MySQL命令行技巧
- OD脚本学习
- 深入学习Django源码基础2 - python多态技巧-运行时判断函数
- SUSE环境下通过YaST安装软件
- Android中使用数据库的注意点
- java异常
- WHU 2013 Summer Team Contest #17 - NWERC 2009
- JAVA编程心得-多态设计初步
- Android重力感应示例
- 在JBoss中部署GeoServer
- Android Intent Action 大全