昨日回顾:
1.组合
一个类产生的对象是另一个对象的属性
组合是为了减少代码的冗余。
2.封装
什么是封装:
特征:属性属性,即类中的变量
技能:方法属性,即类中的函数
把一堆属性(特征与技能)封装一个对象中,对象就好比一个袋子。
封装的目的:
封装的目的是为了可以通过 对象.属性的方式对数据进行存取。
如何封装:
在类内部定义
通过对象.属性的方式添加属性
3.访问限制机制
访问限制机制是什么:
在类内部,凡是以__开头的属性都不能被类外部‘直接’访问,python对其做了变形(隐藏)。
例如:__name-->_类名__name
访问限制机制目的是什么:
防止使用者在外部对隐私数据进行修改,保证数据安全
4.property装饰器
用来装饰在类内部的方法中,使该方法不用加括号都可以调用
5.多态
什么是多态:
同一种事物的多种形态
多态的目的:
让父类定义一套标准,子类遵循父类定义的一套标准。
如何多态:
—子类继承父类,遵循父类的标准
—子类继承抽象类,强制子类必须遵循父类的标准
—鸭子类型,所有类都遵循一套鸭子类型标准
鸭子类型:
只要看起来像鸭子,叫声也是鸭子,那么就是鸭子类型
在不知道对象具体类型的情况下,拥有相同的方法
classmethod与staticamethod
classmethod:
翻译:一个类方法
classmethod是一个装饰器,可以装饰给类内部的方法,使该方法绑定给类来使用。
—对象的绑定方法特殊之处
由对象来调用,会将对象当作第一个参数传给该方法。
—类的绑定方法特殊之处
由类来调用,会将类当作第一个参数传给该方法。
staticmethod:
staticmethod是一个装饰器,可以装饰给类内部的方法,使该方法既不绑定给对象,也不绑定给类。
isinstance与issubclass
__class__
:对象的属性,获取该对象的类。
—isinstance(参数1,参数2):
python内置的函数,可以传入两个参数,用于判断参数1是否是参数2的一个实例。
判断一个对象是否是一个类得到实例。
—issubclass(参数1,参数2):
python内置的函数,可以传入两个参数,用于判断参数1是否是参数2的子类。
判断一个类是否是另一个类的子类
反射
反射:指的是通过'字符串'对 对象或类的属性进行操作。
- hasattr: 通过字符串,判断该字符串是否是对象或类的属性。
- getattr: 获取对象或类的属性。
- setattr: 设置对象或类的属性 。
- delattr: 删除对象或类的属性。
魔法方法
凡是在类内部定义,以__开头__结尾
的方法都称之为魔法方法,又称‘类的内置方法’
魔法方法会在某些条件成立时触发。
__init__
: 在调用类时触发
__str__
: 会在打印对象时触发
__del__
: 对象被销毁前执行该方法,该方法会在最后执行
__getattr__
: 会在对象.属性时,‘属性没有’ 的情况下才会触发
__setattr_
: 会在‘对象.属性 = 属性值' 时触发
__call__
: 会在对象被调用时触发
__new__
: 会在__init__
执行前触发