1.面向对象的简介
- python是一门面向对象的编程语言
*对象就是内存中用来存储指定数据的一块区域 - 对象的结构,每个对象当中都保存了3种数据
。id(标识)id是我们的解析器生成的,在Cpython中id就是对象的内存地址
。type(类型)用来标识当前对象所属的类型,类型就决定了对象有什么功能
。value(值)就是对象中存储的具体数据
(1)对象分为两大类:可变对象和不可变对象
(2)不可变对象的值是不能改变,可变对象的值可以改变 - 所谓面向对象的语言,其实就是语言中的所有操作都是通过对对象来进行的
- 面向过程
。面向过程是指将我们的程序分解为一个一个步骤,通过对每个步骤的抽象来完成程序
。这种编写方式往往只是用于一个功能,如果要实现别的功能,往往复杂性比较低
。这种编程方式符合人类的思维,编写起来比较容易 - 举例说明
。1.妈妈穿衣服穿鞋出门
。2.妈妈骑上电动车
。3.妈妈到超市门口放好电动车
。4.妈妈买西瓜
。5.妈妈结账
。6.妈妈骑电动车回家
。7.到家孩子吃西瓜 - 面向对象的编程语言,关注的是对象,而不注重过程,对于面向对象一切皆对象
- 以上方式可以用 孩子妈妈给孩子卖瓜来解决
- 面向对象的编程思想,将所有功能统一保存到对应的对象当中,要使用某个功能,直接找到对应的对象即可
- 这种编码方式比较容易阅读,并且易于维护,容易复用。但是编写的过程中不太符合常规的思维,编写相对麻
2.类的简介
- 我们⽬前学习的都是Python的内置对象,但是内置对象并不都能满⾜我们的需求,所以我们在开发中经常要⾃定义⼀些对象
- 类简单理解它就是相当于⼀个图纸,在程序汇总我们需要根据类来创建对象。
- 类就是对象的图纸
- 我们也称对象是类的实例(instance)
- 如果多个对象是通过⼀个类创建的,我们称这些对象是⼀类对象
- 语法:
class 类名([父类]):
pass - 类也是⼀个对象,类就是⽤来创建对象的对象
-
可以像对象中添加变量,对象中的变量称之为属性 语法:对象.属性名 = 属性值
image.png
image.png
3.类的使用
- 类和对象都是对现实⽣活中事物的抽象
- 事物包含两部分
。1. 数据(属性)
。2. ⾏为(⽅法) - 调⽤⽅法 对象.⽅法名()
- ⽅便调⽤和函数调⽤的区别:如果是函数调⽤,调⽤时有⼏个形参,就会传
递⼏个实参。如果是⽅法调⽤,默认传递⼀个参数,所以⽅法中⾄少得有⼀个形参 -
在类代码块中,我们可以定义变量和函数
。变量会成为该类实例的公共属性,所有的该实例都可以通过 对象.属性名的形式访问
。函数会成为该类实例的公共⽅法,所有该类实例都可以通过 对象.⽅法名的形式访问
image.png
image.png
4.参数self
4.1属性和方法
- 类中定义的属性和方法都是公共的,任何该类的实例都可以访问
- 属性和方法的查找流程
。当我们调用一个对象的属性时,解析器会在当前的对象中寻找是否含有该属性,如果有,则直接返回当前对象的属性值,如果没有,则去当前对象的类对象当中寻找,如果有则返回类对象中的属性值,如果没有就报错 -
类对象和实例对象都可以保存属性(方法)
。如果这个属性(方法)是所有实例共享的,则应该保存到类对象中
。如果这个属性(方法)时某个实例独有的,则应该保存到实例对象中
。一般情况下,属性要保存到实例对象中,而方法要保存到类对象中
image.png -
理解属性和方法的图解
image.png
4.2 self
- self在定义时需要定义,在调用时自动调用
- self的名字并不是规定死的,但是最好还是按照规定用self
-
self总是指调用时的类的实例
image.png