一、面向对象
1.什么是对象?对象指的是内存中储存指定数据的一块区域
1.1.Python就是一门面向对象的编程语言,可这样理解语言中的所有操作操作都是通过对象进行的
1.2.面向过程
它指将我们的程序分解为一个个步骤,通过对每个步骤的抽象来完成程序,但这种编写方式只适用一个功能,如果要实现别的功能,往往复用性比较低
1.3.面向对象的编程语言,关注的是对象,而不注重过程,对于面向对象一切皆对象
1.4.面向对象的编程思想,将所有功能统一保存到对应的对象中,要使用某个功能,直接找到对应的对象即可,其特点比较容易阅读,易于维护,容易复用,编写相对麻烦
1.5.对象的结构
id(标识)–相当于人的身份证
type(类型)–标记当前对象所属类型,如人有什么功能,而类型又决定了对象具有什么功能
value(值)–对象中储存的具体数据
二、类
类其实就是一个对象,它是用来创建对象的对象
对象是类的实例(isinstance)
#语法
class 类名([父类]):
pass
注:类名我们一般默认第一个字母大写
1.我们可以向对象添加变量,对象中的变量称之为属性
#语法:对象.属性名=属性值
2.类的定义
类和对象都是对现实生活中事物的抽象
它包含两部分
2.1.数据(属性)
2.2.行为(方法)
调用方法: 对象.方法名()
如果是调用函数时,有几个形参,就传几个实参,但是如果是方法调用,默认传递一个参数,即方法中只少有一个形参(这个参数不需传递),否则会报错如下图
正确的如下图
2.3.在类代码块中定义的变量和函数,变量会成为该类实例的公共属性,所有该类的实例都可以 通过 对象.属性名的形式访问;函数会成为该类实例的公共方法,所有该类的实例都可以 通过 对象.方法名的形式访问,如下图
三、参数self
1.属性和方法的查找流程
当我们调用一个对象的属性时,解析器会现在当前的对象中寻找是否还有该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错
2.类对象和实例对象中都可以保存属性(方法),但一般情况下,属性保存到实例对象中 而方法需要保存到类对象中
3.self
self在定义时需定义,但在调用时会自动存入;self名字并不是规定死的,但最好按照约定的用self;self调用时总是指类的实例