day18 面向对象学习总结
一、认识类
类就是拥有相同功能相同属性的对象的集合。- 类是一个抽象的概念
对象就是类的实例(类的具体表现)
1、定义类(创建类)- 用代码说清楚这个类是拥有哪些相同功能和哪些相同属性的对象的集合
相同功能 - 用函数描述功能
相同属性 - 用变量变数
语法:
class 类名():
类的说明文档
类的内容(由属性和方法组成)
说明:
class - 关键字,固定写法
类名 - 由程序员自己命名(标识符不是关键字,见名知义,采用驼峰式命名,并且第一个字母大写
类的说明文档 - 多行注释
类的内容 - 由属性(定义在类中的变量)和方法(定义在类中的函数)组成
2、定义对象(创建对象)
语法: 类名()
p1= Person()
二、类的方法(定义在类中的函数)
它是用来面熟这个类具备的相同功能由哪些(功能不一样,就建立多个函数)
方法分为:对象方法、类方法、静态方法
怎么定义:直接定义在类中的函数就是对象方法
方法 | 定义 | 调用 | 特点 | 使用场景 |
---|---|---|---|---|
对象方法 | 直接定义在类中的函数就是对象方法 | 对象.xxx() | 自带参数self,通过对象调用这个方法的时候,self不需要传参,系统会自动将当前对象传给self(谁调用self就指向谁) | 如果实现函数的功能只需要对象,就将函数定义成对象方法 |
类方法 | 在定义函数前加装饰器@classmethod | 类.xxx() | 自带参数cls,通过类条用这个方法的时候,cls不需要传参,系统会自动将当前累传给cls(谁调用就指向谁) | 如果实现函数的功能不需要对象,就使用类方法或者静态方法 |
静态方法 | 在定义函数前加装饰器@sataicmethod | 类.xxx() | 没有特点 | 如果实现函数的功能不需要对象,就使用类方法或者静态方法 |
初始化方法 | ____init____方法 | 在创建函数的时候自动调用 | 是一个魔法方法,类中所有名字以两个下划线开头并且以两个下划线结尾的方法名都是魔法方法,所有的魔法方法都不需要程序员去调用,系统会自动在特定情况下会自动调用对应的魔法方法 | python的类有哪些魔法方法是固定的,每个魔法方法什么时候调用也是固定。 |
三、属性
属性就是定义在类中的变量,属性分为类属性和对象属性两种
属性 | 定义 | 使用方法 | 什么时候用 |
---|---|---|---|
类属性 | 直接定义在类中的变量 | 类.xxx() | 如果属性值不会因为对象不同而不一样就定义成类属性,比如:圆周率 |
对象属性 | ’self.属性名=值‘的形式定义在init方法中 | 对象.xxx | 如果属性值会因为对象不同而不一样就定义成对象属性,比如:圆的半径 |
对象属性赋默认值的方法:
- 赋一个固定的值
- 用一个没有默认值的形参赋值
- 用一个有默认值的形参赋值