文章目录
1.理解创建类的基本方法
1.1 类的定义
类(class)是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。
1.2 创建类
【例】编写一个程序,用于判断学生是非已经完成作业。如果完成,教师表扬,否则进行批评。
2.初步理解对象和面向对象
对象(object):表示客观世界问题空间中的某个具体事物,又表示软件系统解空间中的基本元素。
面向对象程序设计(Object-oriented programming, OOP):是一种程序设计范型,也是一种程序开发的方法。
3.属性
3.1.1 理解类属性
①类属性,又称静态属性,不会因为创建实例而影响类的属性
②只有通过类才能修改
③实例也拥有类属性,但不能修改类属性
【例】类属性
实例可以调用类属性
在类中增加属性,对应的实例会跟着增加属性
在实例中增加属性,对应的实例类不会跟着增加属性
3.1.2 理解实例属性
①实例属性,也是动态属性
②通过实例创建
③不同实例的实例属性值不同
④实例的__ dict__显示当前实例的所有属性
【例】实例属性
【例】实例属性的访问, __ dict__
3.1.3 理解self的作用
①类中的方法,如无特别规定,都是以self作为第一参数
②self引用当前实例
【例】创建类,能够计算任意两个日期之间的天数、周数
安装包 dateutil
dateutil包的一般使用方法参考:https://www.jianshu.com/p/f29dddce3a9a
4.继承
4.1 理解继承的含义
①继承是对象的特性之一
②继承是面向对象编程的一个重要概念
4.2 继承的实现方法
①父类和子类
②单继承
③多继承:不提倡使用
【例】单继承
如果子类里面的方法或者属性与父类的方法或者或者属性重名的话,父类的属性或者方法会被覆盖,子类只会拥有自己定义重名的属性或者方法
重名的话,父类的方法或者属性的继承
【例】单继承-学生
【例】多继承
【例】编写“物理学家”类,并将其作为“理论物理学家”和“实验物理学家”两个类的父类
5.多态与封装
5.1 多态的含义
①多态是对象的特性之一
②Python语言天然具有多态的特性
【例】由于没有对变量的属性进行限制,只要具备+元素的对象都可以作为x和y的变量,比如字符串、列表等,这种现象叫做多态
5.2 实现封装的方法
①封装是对象的特性之一
②Python中通过私有化的方式实现封装,私有化的方法是名称前面加两个下划线
【例】
【例】
6.定制类
6.1 理解类和类型
类就是类型,讨论是什么类型实际是实例化了哪种类
【例】类和类型
【例】__ str__ 和__ repr__,str对人友好,repr对解析器友好
6.2 掌握自定义对象类型的方法
【例】写分数
python标准库
7.控制属性访问
7.1 优化内存 __ slots__
【例】控制实例的属性
正常情况下,实例的属性可以随意增加
但可以通过 __ slots__进行限制
7.2 掌握与属性相关的特殊方法
①__ getattr__
②__ setattr__
【例】如果遇到访问对象的属性不存在,可以用__ getattr__
8.迭代器和生成器
8.1 迭代器
有这个方法的对象都是可迭代的
【例】迭代器的创建,迭代器还具有__ next__方法
__ next__方法 让迭代器对象可以读到内存中
迭代器对象无法自动返回到初始位置,需要重新加载
【例】用类的方法定义迭代器
【例】斐波那契数列,迭代器对象方便控制内存
【例】标准库中创建无限个数 -itertools
8.2 生成器
函数中用yield返回结果,就是生成器对象
生成器对象也是迭代器对象,也是可迭代的
【例】普通函数和生成器函数
【例】用生成器写斐波那契数列
【例】生成器解析
迭代器和生成器的共同优点都是优化了内存存储,并不是所有的元素都一次性读到内存,而是用多少,生成多少。