学习笔记-Python基础-类

这篇博客详细介绍了Python中的类与对象的基础知识,包括类的定义与创建、对象的理解、面向对象编程、属性(类属性与实例属性)、self的作用、继承、多态与封装、定制类、控制属性访问、迭代器和生成器的概念及实现方法。通过实例和代码展示了Python面向对象编程的精髓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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返回结果,就是生成器对象
在这里插入图片描述
生成器对象也是迭代器对象,也是可迭代的
在这里插入图片描述
在这里插入图片描述
【例】普通函数和生成器函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【例】用生成器写斐波那契数列
在这里插入图片描述
【例】生成器解析
在这里插入图片描述
迭代器和生成器的共同优点都是优化了内存存储,并不是所有的元素都一次性读到内存,而是用多少,生成多少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值