day17—— 学习总结
-
方法
-
对象方法:
- **怎么定义:**直接在类中定义
- **怎么调用:**通过对象调用
- **特点:**有默认参数self,self在调用的时候不用传参,系统自动将当前对象传给self
- **什么时候使用:**如果实现函数的功能需要对象属性就使用对象方法(对象方法中的self可以用来提供需要的所有对象属性)
-
类方法:
- **怎么定义:**在类中定义函数前加装饰器 @classmethod
- **怎么调用:**通过类调用
- **特点:**自带参数cls,cls在调用的时候不需要传参,系统自动将当前类传给cls(谁调用就指向谁)
- **什么时候使用:**实现函数功能在不需要对象属性的时候需要类,就使用类方法
-
静态方法:
- **怎么定义:**在类中定义函数前加装饰器 @staticmethod
- **怎么调用:**通过类调用
- **特点:**没有默认参数
- **什么时候使用:**实现函数的功能既不需要类也不需要对象属性就使用静态方法
-
-
方法在定义的时候怎么确定参数
看实现函数的功能除了类中属性以外需不需要额外的数据 需要几个
-
方法的调用问题
- 本质上,不管什么方法都可以用对象和类调用
- 类可以调用对象方法,但是self需要自己传参,失去可以指向当前对象的意义
- 对象可以调用类方法,调用的时候cls还是指向当前类,但是会消耗额外的CPU、内存资源
- 本质上,不管什么方法都可以用对象和类调用
对象属性的增删改查
__repr__
会在当前类的对象被打印的时候自动调用,并且打印结果就是这个函数的返回值。(返回值必须是字符串)
-
查—— 获取对象属性的值
- 对象 . 属性
- getattr(对象,属性名) / getattr(对象,属性名,默认值)
-
增、改
- 对象 . 属性 = 值
- setattr(对象,属性名,值)
-
删
-
del 对象 . 属性
-
delattr(对象,属性名)
-
内置类的属性
-
__doc__
—— 获取类的说明文档 -
__class__
—— 获取对象的类型(对象属性),功能和type()函数一样 -
__name__
—— 获取类名(类属性) -
__module__
—— 获取类所在模块的模块名 -
__dict__
—— 获取指定类所有的类属性及其对应的值(以字典的形式返回)
__dict__
—— 获取指定对象所有的对象属性及其对应的值
-
__base__
—— 获取指定类的父类__bases__
—— 获取指定类的父类们
运算符重载
-
python中的运算符
python中的每一个运算符都对应一个固定的魔法方法,每次使用运算符的时候本质就是去调用对应的方法
某种类型的数据是否支持某种运算和这个类型中有没有实现运算符对应的魔法方法有关
-
在自己的类中重载指定运算符