Python 学习笔记 - 面向对象(封装,继承和多态)
2017-07-18 19:17
806 查看
之前学习的编程方式都是通过面向过程来实现的,对于一些重用的代码,进一步的使用了函数,增强了代码的可读性和重用性。Python同时还支持面向对象的编程。
面向对象有三大特性:
封装
继承
多态
首先来看看封装。封装包括两点,把内容封装到某个地方;调用封装的内容
例1;
几个注意事项:
我定义了3个类,每个类都有自己的构造方法__init__,我对每一个类都进行实例化一个对象;每个对象创建的时候会自动调用自己的__init__方法封装不同的内容;
self是一个形式参数,他就相当于实例,比如当c1_obj=c1('alex',c2_obj),self就等于c1_obj
当我们输出money这个字段的时候,c3_obj可以调用show这个方法输出money(间接调用self)或者直接输出c3_obj.money(直接调用)
对象本身也可以当做参数传给其他的类
封装的概念有了,如果还记得前面学的pickle,我们可以把自定义的结构序列化保存到一个文件中。
s1.py
如果在另外一个文件里面调用这个pickle序列化的文件,必须导入对应的类,不然无法识别
s2.py
接下来看看继承,子类可以继承父类的所有东西。
首先看看单继承的例子
注意要点:
F2是F1的子类
创建obj对象的时候,他自动调用F2的构造函数,当他尝试调用foo()方法的时候,首先看自己有没有,如果没有就去父类寻找。类似的,当调用show()的时候,因为自己已经有了,因此直接调用自己的
看看另外一个例子,原理一样,子类的对象调用方法的时候,self是指向的子类对象,因此他的顺序始终是从子类开始寻找的,找不到才去父类找
接下来看看python特有的多继承,格式很简单C1(C2,C3)表示C1同时继承C2和C3
当多继承的类里面进行调用的时候,遵循的原则有2点,如果是下图左边的情景,那么先在左边做完深度遍历再去找右边的父类;如果是右边的情景,有共同的祖先,那么通过左边到祖先的下面,然后通过右边的父类直到祖先
例如,
最后看看多态。Python里面原生态的支持多态,比如传入参数的时候不需要指定类型,可以是任何数据类型;而类似的方式在Java或者C#里面需要通过继承来实现同一方法传入不同数据类型的参数
面向对象有三大特性:
封装
继承
多态
首先来看看封装。封装包括两点,把内容封装到某个地方;调用封装的内容
例1;
我定义了3个类,每个类都有自己的构造方法__init__,我对每一个类都进行实例化一个对象;每个对象创建的时候会自动调用自己的__init__方法封装不同的内容;
self是一个形式参数,他就相当于实例,比如当c1_obj=c1('alex',c2_obj),self就等于c1_obj
当我们输出money这个字段的时候,c3_obj可以调用show这个方法输出money(间接调用self)或者直接输出c3_obj.money(直接调用)
对象本身也可以当做参数传给其他的类
封装的概念有了,如果还记得前面学的pickle,我们可以把自定义的结构序列化保存到一个文件中。
s1.py
s2.py
首先看看单继承的例子
F2是F1的子类
创建obj对象的时候,他自动调用F2的构造函数,当他尝试调用foo()方法的时候,首先看自己有没有,如果没有就去父类寻找。类似的,当调用show()的时候,因为自己已经有了,因此直接调用自己的
看看另外一个例子,原理一样,子类的对象调用方法的时候,self是指向的子类对象,因此他的顺序始终是从子类开始寻找的,找不到才去父类找
当多继承的类里面进行调用的时候,遵循的原则有2点,如果是下图左边的情景,那么先在左边做完深度遍历再去找右边的父类;如果是右边的情景,有共同的祖先,那么通过左边到祖先的下面,然后通过右边的父类直到祖先
例如,
相关文章推荐
- Python 学习笔记 - 面向对象(封装,继承和多态)
- 初学Python的学习笔记8----面向对象、数据封装、访问限制、继承和多态
- 【python学习笔记】Python面向对象的理解(封装,继承,多态)
- python学习笔记14(多态、封装、继承)
- OC学习笔记02-OC中的面向对象语法表现 - 封装 继承与多态
- 嵌入式开发之C++基础学习笔记4--面向对象封装继承多态
- 黑马程序员-------面向对象的封装、继承、多态一些学习笔记
- 韩顺平 javascript教学视频_学习笔记19_js面向对象三大特征(封装,继承,多态)
- 黑马程序员java学习笔记——面向对象的特征封装、继承和多态
- Python学习之面向对象(封装、继承、多态)
- python学习笔记14(多态、封装、继承)
- 【Python】学习笔记——-7.3、继承和多态
- 黑马程序员-OC学习笔记-----封装、继承、多态
- Java学习笔记(四)之―认识类、对象、封装、继承、多态、打包器
- java 入门学习笔记(封装,继承,多态)
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
- java 学习笔记——类之间的关系之封装、继承与多态的详解
- 学习笔记 Java类的封装、继承和多态 2014.7.10
- python3全栈开发-面向对象的三大特性(继承,多态,封装)之继承
- 黑马程序员——OC语言学习——OC面向对象的三大特性:封装、继承、多态,OC字符串——NSString