面向对象编程
1,编程思维
-
面向过程编程
- 工具:思路加语法
-
函数式编程
- 我要找到洗衣机,或者买个洗衣机
- 工具:函数
-
面向对象编程
- 到问题马上想到有没有一个对象具备这个功能,如果有直接用,没有就创建这个对象(创建对象还要看有没有类,没有类还要创建类)
- 工具:类和对象
2,认识类和对象
-
类:类是具有相同功能和属性的集合 ---- 抽象概念
-
对象:对象就是类的实例 ---- 类的具体表现
3,创建类
创建类就是用代码来描述清楚这个是有哪些相同功能(函数)和哪些相同属性(保存数据的变量)的对象的集合
语法:
class 类名:
说明文档
类的内容(方法和属性)
-
class ---- 关键字
-
类名 ---- 由程序员自己命名
- 要求不能是关键字,驼峰式命名,首字母大写,不能是系统已经使用的名字
-
类的内容 ---- 由方法和属性组成,方法又分为对象方法、类方法和静态方法;属性分为类属性和对象属性
(* ̄(oo) ̄):方法就是定义在类中的函数,属性就是定义在类中的变量
4,创建对象
对象又叫实例
语法:
类名()
class AAA:
pass
p1 = AAA()
5,方法
5.1对象方法
-
怎么定义:将函数 直接定义在类中
-
怎么调用:通过 “对象.” 的方式调用
-
特点:自带参数self,在通过对象调用对象方法的时候,参数 self不需要传参,系统会自动将当前对象传给self。
5.2类方法
-
怎么定义 ---- 在定义函数前加装饰器(@classmethod)
-
怎么调用 ---- 通过 “类.” 的方式调用
-
特点 ---- 自带参数cls,在调用的时候cls不用传参,系统会自动将当前对象传参给cls
5.3静态方法
-
怎么定义 ---- 在定义函数前加装饰器(@staticmethod)
-
用方法 ---- 通过 “类.” 的方式调用
-
特点 ---- 没有特点
6,常用的魔法方法
类中两个下划线开头,两个下划线结尾,并且会在特定情况下会自动调用的就是魔法方法。
1,__init__
在通过类创建对象的时候会被自动调用
创建对象的时候需不需要参数需要几个看这个类的__init__方法除了self外有没有额外的参数,有几个
2,__repr__
在打印类的对象的时候会被自动调用类中的__repr__方法,并且获取返回值为打印结果(结果必须是字符串)
7,属性
①属性(变量)用来描述相同属性
②属性分为:类属性(字段)和对象属性
-
类属性
- 定义 - 直接定义在类中的变量就是类属性
- 使用 - 通过 “类. ” 的方式使用
- 使用场景 - 如果属性值不会因为对象不同而不一样就使用
-
对象属性
- 定义 - 以 “self.属性名 = 值” 的方式定义
- 使用 - 通过 “对象. ” 的方式使用
- 使用场景 - 如果属性值“会”因为对象不同而不一样就使用
- 对象属性默认值
- 赋一个固定的值:每次创建对象不能重新赋值,只能在创建好对象以后修改属性值
- 使用没有默认值的参数赋值
- 使用有默认值的参数赋值
-
self的使用
- 在对象方法中self是谁调用就指向谁,所以在对象中可以直接将self当做对象使用(类中对象能做的事self都能做)
8,方法的选择
-
对象方法:如果实现函数的功能需要对象(需要对象属性)就使用对象方法。
-
类方法:实现函数功能的时候不需要对象或者对象属性的前提下,就使用类方法
-
静态方法:既不需要类也不需要对象。
9,类的继承
-
继承就是让子类直接拥有父类的属性和方法
- 子类:继承者
- 父类:被继承者
-
语法:
class 类名(父类列表):
类的说明文档
类的内容
(* ̄(oo) ̄):如果定义类的时候没有写父类,那么这个类默认继承Python的基类 - object
-
在子类中添加内容
- 添加类属性和方法
- 添加对象属性
-
多继承
- 多继承可以继承父类所有方法和类属性,但是只能继承第一个父类的对象属性(了解)
10,json数据
10.1json数据
-
json是一种数据格式,用于不同语言之间进行有效的数据沟通。
-
一个json文件只能有一个数据
10.2json数据格式
-
要求:
- 一个json有且只有一个数据
- 唯一的数据必须是json支持的类型数据
-
json支持的数据类型
- 数字 ---- 数字直接写,并且支持科学计数法(任何数)
- 字符串 ---- 只能使用双引号,支持转义字符(“json”)
- 布尔值 ---- 只有true和false
- 空值 ---- null
- 数组 ---- 相当于Python的列表[元素1, 元素2, …], 元素的类型必须是json支持的数据类型
- 字典 ---- 相当于Python的字典,但是json中的键只能是字符串。