类与对象
方法
1) 对象方法
方法指的就是定义在类中的函数。
- 怎么定义: 直接定义在类中函数就是对象方法
- 怎么调用: 通过"对象.xx()"的形式来调用
- 特点: 每个对象方法都有一个默认参数self,且在通过对象调用时不需要手动传参,系统会自动将当前对象传给self(self谁调用就指向谁)
- 什么时候用: 如果实现函数的功能需要用到对象属性,就使用对象方法
1.1)初始化方法 - init
__init__是一个python类中一个特殊的对象方法,也是魔法方法
魔法方法: 类中方法名以__开头并且以__结尾的方法都是魔法方法,魔法方法全部都是系统自带的。魔法方法不需要程序员主动调用,系统会特定的情况下自动调用。 - __int__方法会在每次创建对象时被自动调用
- 通过类创建对象的时候需不需要参数,需要几个参数,由类中的__init__决定
2) 类方法
方法指的就是定义在类中的函数。 - 怎么定义: 定义函数前加装饰器@classmethod
- 怎么调用: 通过"类.xx()"的形式来调用
- 特点: 每个类方法都有一个默认参数cls,且在通过对象调用时不需要手动传参,系统会自动将当前类传给cls
- 什么时候用: 在不需要对象属性的情况下需要类就使用类方法
3) 静态方法
方法指的就是定义在类中的函数。 - 怎么定义: 定义函数前加装饰器@staticmethod
- 怎么调用: 通过"类.xx()"的形式来调用
- 特点: 没有特点-没有特殊的默认参数
- 什么时候用: 实现函数功能不需要类属性和对象属性就使用静态方法
类中的属性
定义类就是用代码来描述这个类是拥有哪些相同特征的事物的总和。
如果特征是通过数据来体现的,那么这种特征就用属性来表示。
1) 对象属性
a. 怎么定义: 以"self.xx = 值"的形式定义在__init__方法中的属性
b. 怎么使用: 通过"对象.xx"的方式来使用
c. 什么时候用: 属性会因为对象不同而不一样的时候就使用对象属性
对象属性默认值
1.方式1: 使用固定的值(主要用于这个属性值在绝大部分情况下都是某一个值,极少情况会变化的时候用)
2.方式2: 在__init__中提供给这个属性赋值的形参,形参没有默认值(属性值一般都不一样)
3.方式3: 在__init__中提供给这个属性赋值的形参,形参有默认值(属性值出现默认值的情况居多)
2) 类属性
a. 怎么定义: 直接定义在类中的变量就是类属性
b. 怎么使用: 通过’类.xx与对象.xx’的方式来使用
c. 什么时候用: 属性不会因为对象不同而不一样的时候就使用类属性
对象属性的增删改查
__repr__方法(魔法方法)当打印当前类的对象时侯,这个方法会被自动调用,并且在打印时候会打印这个方法的返回值(返回值必须是字符串)
__dict__属性可以获取对象的属性(字典类型)
__slots__属性(对象属性)可以约束当前类的对象最多能拥有哪些对象属性
1.查 - 获取属性值
对象.属性 - 获取对象的某一个的对象属性;不存在报错
getattr(对象, 属性名) - getattr可以动态确定,获取对象的某一个的对象属性;不存在报错
getattr(对象, 属性名, 默认值) - getattr可以动态确定获取某一个的对象属性;返回默认值
2.增、改
对象.属性 = 值 - 如果属性存在就修改指定属性的值,如果属性不存在就添加属性
setattr(对象, 属性名, 值) 如果属性存在就修改指定属性的值,如果属性不存在就添加属性
3.删
del 对象.属性 - 删除对象的某一个对象属性
delattr(对象,属性名) - 删除对象的某一个对象属性
继承:让子类直接拥有父类所有的属性和方法
super().init() # 调用父类的__init__方法