1.理解创建类的基本方法

1.1 类的定义

类(class)是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。

1.2 创建类

学习笔记-Python基础-类
学习笔记-Python基础-类
【例】编写一个程序,用于判断学生是非已经完成作业。如果完成,教师表扬,否则进行批评。
学习笔记-Python基础-类
学习笔记-Python基础-类

2.初步理解对象和面向对象

对象(object):表示客观世界问题空间中的某个具体事物,又表示软件系统解空间中的基本元素。
面向对象程序设计(Object-oriented programming, OOP):是一种程序设计范型,也是一种程序开发的方法。
学习笔记-Python基础-类

3.属性

3.1.1 理解类属性

①类属性,又称静态属性,不会因为创建实例而影响类的属性
②只有通过类才能修改
③实例也拥有类属性,但不能修改类属性
【例】类属性
学习笔记-Python基础-类
实例可以调用类属性
学习笔记-Python基础-类
在类中增加属性,对应的实例会跟着增加属性
学习笔记-Python基础-类
在实例中增加属性,对应的实例类不会跟着增加属性
学习笔记-Python基础-类
学习笔记-Python基础-类

3.1.2 理解实例属性

①实例属性,也是动态属性
②通过实例创建
③不同实例的实例属性值不同
④实例的__ dict__显示当前实例的所有属性
【例】实例属性
学习笔记-Python基础-类
学习笔记-Python基础-类
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】实例属性的访问, __ dict__
学习笔记-Python基础-类

3.1.3 理解self的作用

①类中的方法,如无特别规定,都是以self作为第一参数
②self引用当前实例
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】创建类,能够计算任意两个日期之间的天数、周数
安装包 dateutil
学习笔记-Python基础-类
学习笔记-Python基础-类
学习笔记-Python基础-类
dateutil包的一般使用方法参考:https://www.jianshu.com/p/f29dddce3a9a

4.继承

4.1 理解继承的含义

①继承是对象的特性之一
②继承是面向对象编程的一个重要概念

4.2 继承的实现方法

①父类和子类
②单继承
③多继承:不提倡使用
【例】单继承
学习笔记-Python基础-类
如果子类里面的方法或者属性与父类的方法或者或者属性重名的话,父类的属性或者方法会被覆盖,子类只会拥有自己定义重名的属性或者方法
学习笔记-Python基础-类
重名的话,父类的方法或者属性的继承
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】单继承-学生

学习笔记-Python基础-类
学习笔记-Python基础-类
【例】多继承
学习笔记-Python基础-类
【例】编写“物理学家”类,并将其作为“理论物理学家”和“实验物理学家”两个类的父类
学习笔记-Python基础-类

5.多态与封装

5.1 多态的含义

①多态是对象的特性之一
②Python语言天然具有多态的特性
【例】由于没有对变量的属性进行限制,只要具备+元素的对象都可以作为x和y的变量,比如字符串、列表等,这种现象叫做多态
学习笔记-Python基础-类

5.2 实现封装的方法

①封装是对象的特性之一
②Python中通过私有化的方式实现封装,私有化的方法是名称前面加两个下划线
【例】
学习笔记-Python基础-类
【例】
学习笔记-Python基础-类

6.定制类

6.1 理解类和类型

类就是类型,讨论是什么类型实际是实例化了哪种类
【例】类和类型
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】__ str__ 和__ repr__,str对人友好,repr对解析器友好
学习笔记-Python基础-类

6.2 掌握自定义对象类型的方法

【例】写分数
学习笔记-Python基础-类
学习笔记-Python基础-类
python标准库
学习笔记-Python基础-类
学习笔记-Python基础-类

7.控制属性访问

7.1 优化内存 __ slots__

【例】控制实例的属性
学习笔记-Python基础-类
正常情况下,实例的属性可以随意增加
学习笔记-Python基础-类
但可以通过 __ slots__进行限制
学习笔记-Python基础-类
学习笔记-Python基础-类

7.2 掌握与属性相关的特殊方法

①__ getattr__
②__ setattr__
【例】如果遇到访问对象的属性不存在,可以用__ getattr__
学习笔记-Python基础-类

8.迭代器和生成器

8.1 迭代器

有这个方法的对象都是可迭代的
学习笔记-Python基础-类
【例】迭代器的创建,迭代器还具有__ next__方法
学习笔记-Python基础-类
__ next__方法 让迭代器对象可以读到内存中
学习笔记-Python基础-类
学习笔记-Python基础-类
迭代器对象无法自动返回到初始位置,需要重新加载
学习笔记-Python基础-类
【例】用类的方法定义迭代器
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】斐波那契数列,迭代器对象方便控制内存
学习笔记-Python基础-类
【例】标准库中创建无限个数 -itertools
学习笔记-Python基础-类

8.2 生成器

函数中用yield返回结果,就是生成器对象
学习笔记-Python基础-类
生成器对象也是迭代器对象,也是可迭代的
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】普通函数和生成器函数
学习笔记-Python基础-类
学习笔记-Python基础-类
学习笔记-Python基础-类
【例】用生成器写斐波那契数列
学习笔记-Python基础-类
【例】生成器解析
学习笔记-Python基础-类
迭代器和生成器的共同优点都是优化了内存存储,并不是所有的元素都一次性读到内存,而是用多少,生成多少。

相关文章:

  • 2022-02-06
  • 2021-10-22
  • 2021-04-06
  • 2022-12-23
  • 2022-02-23
  • 2021-09-16
  • 2021-07-06
  • 2021-07-04
猜你喜欢
  • 2021-08-29
  • 2022-02-19
  • 2022-01-01
  • 2021-09-02
  • 2022-12-23
相关资源
相似解决方案