面向对象
1.什么是面向对象
(图片来自网络)
哈哈,当然不是图中的意思。
1).面向对象(Object Oriented,OO)是软件开发方法。利用各大搜索引擎得到的解释都太官方,完全看不懂啥意思对吧?那么我的理解是这样:
在上一篇博文说到了装饰器的含义,给一个现有的程序添加新的功能,同时又不改变其结构,作为现有对象的一个包装修饰。那么其实被用于修饰的程序就是我们这篇文章主旨——面向对象里的对象;不管原程序内部在运行什么操作,装饰器只是对其修饰就行,这个理念就是面向对象里的封装;不改变其结构继续拥有原程序的功能就是面向对象的继承;添加新的功能最终组成一个功能丰富的程序,当新的程序调用时因为多功能对不同对象的不同行动就是面向对象里的多态(可能有些逻辑和概念上的小牵强,大体是没错的)
这里补一句,因为在这方面类的运用在企业里确实用的很多,本来直接就用类也很方便,所以装饰器基本很少用,但也不是说装饰器一无是处,各有特点。装饰器和面向对象都是面试必问问题
2).面向对象三要素:
封装:信息隐蔽技术,对一个定义好的函数使用。
- 隐藏实现方案的细节
- 将代码和处理的数据绑定一起的一种编程机制,用于保证程序和数据不受外部干扰且不会被误用
继承:子类继承父类特性
- 一个对象获得另一个对象属性的过程,用于实现按层分类的概念
- 一个深度继承的子类(派生类)继承了类层次中它的每个祖先(超类,基类,父类)的所有属性
- 搜索顺序由下而上,由左至右
多态:不同对象对同一方法响应不同行动
- 允许一个接口被多个通用的类动作使用的特性,具体使用那个动作与应用场合相关
- 用于为一组相关的动作设计一个通用的接口,以降低程序复杂性
3).再看一个图,这次是认真的
(图片来自网络)
然后如果你没懂,不要紧,学完面向对象编程这一章你自然而然就懂了。还有我想说的是,面向对象本也不是一两句话就能解释清楚的。
2.面向对象有三个方向:
OOA:面向对象分析
OOB:面向对象设计
OOP:面向对象编程
对象(object)
1.什么是对象?
在python中,一切皆对象,就像在linux里一切皆文件一样。也就是说只要是python里的东西,全部都是对象。对象,就是抽象化的数据本身
2.对象的三部分:
- 身份
- 类型
- 值
3.对象的比较:
- 身份比较:用于确定是否同一个对象—id()
- 类型比较:用于确定是否同属于一个类型—type(),isinstance()
- 值比较:值是否相同— ==
4.常用对象:
- 数值
- 字符串
- 列表
- 元组
- 字典
- 集合
5.对象=属性+方法
类(class)
1.什么是类:
将同一种具体事物的共同特性抽象出来的表现
2.类的特性:
- 类是一种数据结构,可用于创建实例(一般情况,类封装了数据和对应的方法)
- python的类是一个可调用对象,即类对象
- python2.2之后,类是一种自定义类型(实例是声明某个自定义类型的变量)
3.类的关系:
- 依赖:一个类的方法操纵另一个类的对象
- 聚合:类A的对象包含类B的对象
- 继承:描述特殊与一般关系
4.定义类的格式:
class 类名(类名首字母建议大写):
code
例1:
定义的Temple就是类对象,而a作为类对象实际应用,是一个实例对象
例2:
class People(): #属性 head=1 #一个头 legs=2 #两条腿 hands=2 #两只手 #方法 def walk(self): print('走了一步') def seyhello(self): print('看见熟人打招呼')
调用结果:
其中,People就是类对象,yang就是实例对象,yang=People() 这句话把People实例化给yang
而head,hand,legs就是类属性,而walk和seyhello就是类的方法(函数)