学习笔记
# 0,OOP-Python面向对象
- Python的面向对象
- 面向对象编程
- 基础
- 公有私有
- 继承
- 组合,Mixxi
- 魔法函数
- 魔法函数概述
- 构造类魔法函数
- 运算类魔法函数
# 1,面向对象概述(ObjectOriented,00)
- OOP思想
- 接触到任意一个任务,首先想到的是任务这个事件的构成,是由模型构成的
- 几个名词
- OO:面向对象
- OOA:面向对象的分析
- OOD:面向对象的设计
- OOI:XXX的实现
- OOP:XXX的编程
- OOA->OOD->OOI:面向对象的实现过程
- 类和对象的概念
- 类:抽象名词,代表一个集合,共性的事物
- 对象:具象的事物,单个个体
- 类跟对象的关系
- 一个具象代表一类事物的某一个个体
- 一个是抽象,代表一大类事物
- 类中的内容,应该具有两个内容
- 表明事物的特征,叫做属性(变量)
- 表明事物功能或动作,称为成员方法(函数)
# 2,类的基本实现
- 类的命名
- 遵守命名的规范
- 大驼峰(由一个或者多个单词构成,每个单词首字母大写,单词跟单词之间直接相连)
- 尽量避开跟系统命名相似的命名
- 如何声明一个类
- 必须用class关键字
- 类由属性和方法构成,其他不允许出现
- 成员属性定义可以直接使用变量赋值,如果没有,允许使用None
- 案例 01
- 实例化类
变量 = 类名()#实例化了一个对象
- 访问对象成员
- 使用点操作符
obj.成员属性名称
obj.成员方法
- 可以通过默认内置变量检查类和对象的所有成员
- 对象所以成员检查
# dict前后各有连个下划线
obj.__dict__
案列02
- 类所有成员
# dict前后各有两个下划线
class_name.__dict__
# 3.和对象的成员分析
- 类和对象都可以存储成员,成员可以归类所有,也可以归对象所有
- 类存储成员时使用的是与类关联的一个对象
- 独享存储成员是存储再当前的对象中
- 对象访问一个成员时,如果对象中没有该成员,尝试访问类中的同名成员,
如果对象中有此成员,一定使用对象中的成员。
- 创建对象的时候,类中的成员不会放入对象中,而是得到一个空对象,没有成员
- 通过对象对类中成员重新赋值或者通过对象添加新成员时,对应成员会保存
在对象中,而不会修改类成员。
# 5,关于self
- self在对象的方法中表示当前对象本身,如果通过对象调用一个方法,那么该对象会自动传入
到当前方法的第一个参数中
- self并不是关键字,质只是一个用于接受对象的普通参数,理论上可以用任何一个普通变量代替
- 方法中有self形参的方法称为非绑定类的方法,可以通过对象访问,没有self的时绑定类的方法
,只能通过类访问。
- 使用类访问绑定类的方法时,如果方法中需要访问当前类的成员,可以通过__class__成员来访问。
案例03,04
# 6,面向对象的三大特性
- 封装
- 继承
- 多态
## 6.1,封装
- 封装就是对对象的成员进行访问限制
- 封装的三个级别:
- 公开,public
- 受保护的,protected
- 私有的,private
- public,protected,private不是关键字
- 判别对象的位置
- 对象内部
- 对象外部
- 子类中
- 私有
- 私有成员是最高级别的封装,只能在当前类或对象中访问
- 在成员前面加两个下划线即可
class Person():
#name是共有的成员
name = "liuyang"
# __age就是私有成员
__age = 18
- python的私有不是真私有,是一种成为name mangling的改名策略
可以使用对象,_classname__attributename访问
案例05:
- 受保护的封装 protected
- 受保护的封装是将成员进行一定级别的封装,然后,在类中或者子类中都
可以进行访问,但是外部不可以
- 封装方法:在成员称前添加一个下划线即可
- 【python下划线的使用】(http://blog.csdn.net/handsomekang/article/details/40303207)