1、面向对象中的经常使用方法:函数
2、反射:程序应该要具有访问、检测、修正自己状态或者行为的能力。spa
面向对象中的反射是经过字符串的形式操做对象相关的属性。对象
(一切都是对象,均可以使用反射。类也是对象,类也可使用反射。)接口
A. 四个反射(检讨)的方式:(对类也适用)字符串
1.hasattr(obj,’属性名’): 判断某个对象中是否有某个属性get
返回值为布尔型。it
2.getattr(obj,’属性名’,defaut) 获取属性值class
若是有这个属性:反射
返回的是obj.属性名。若是属性书数据属性可直接访问,若是是方法,直 接加括号运行。程序
若是没有这个属性:返回defaut这个参数
3.setattr(obj,’属性名’’属性值) 设置属性(添加属性)
能够为对象添加属性:包括数据属性和函数。
4. delattr(obj,’属性名’) 删除某个属性
1.反射用来能够实现插拔。(预留接口插入功能,或者删除功能)
2.动态导入模块(基于反射当前模块成员)
3、__getattr__,__delattr__,__setattr__(注意:必须设置参数,参考反射参数)
内置的__开头的函数,会在特定状况下自动执行代码。
如__init__函数会在调用,或者导入模块包时,自动执行。
__setattr__会在添加、修改属性的时候被触发。
__delattr__会在删除属性的时候被触发。
__getattr__只会在访问属性,且属性不存在的状况下才会触发。
__getattribute__只要访问属性,不能属性存不存在都会触发执行。
4、描述符(注意:必须设置参数,参考反射参数)
(注意:描述符当中的__set__()等必须有参数,不然报错,内置方法。)
在一个新式类中,包含了def __set__(self)或def __get__(self)或def __delete__(self)方法的就叫描述符,因此描述符的本质就是一个新式类。可是描述符(新式类)在操做自身属性时不触发,只有将描述符(这个新式类)组合到其余类中,对这个类进行属性操做,描述符才可以相应触发。
5、__init__、__str__、__call__、__del__的自动触发条件。
__str__是用来改变对象的值,print时触发,且返回值必须是字符串类型。