常用方法与放射

一、面向对象中的常用方法:

  1. isinstance(obj,)     判断某个对象是不是某个类的实例。
  2. issubclass(子类,父类)  判断一个类是不是后面类的派生类(子类).

 

二、反射:程序应该要具备访问、检测、修正本身状态或者行为的能力。

面向对象中的反射是通过字符串的形式操作对象相关的属性。

(一切都是对象,都可以使用反射。类也是对象,类也可以使用反射。)

 

A. 四个反射(反省)的方式:(对类也适用)

1.hasattrobj,属性名:          判断某个对象中是否有某个属性

返回值为布尔型。

 

2.getattrobj,属性名defaut       获取属性值

如果有这个属性:

返回的是obj.属性名。如果属性书数据属性可直接访问,如果是方法,直 接加括号运行。

如果没有这个属性:返回defaut这个参数

 

3.setattrobj,属性名’’属性值)    设置属性(添加属性)

可以为对象添加属性:包括数据属性和函数。

 

4. delattrobj,属性名    删除某个属性

 

  1. 反射的作用:

1.反射用来可以实现插拔。(预留接口插入功能,或者删除功能)

2.动态导入模块(基于反射当前模块成员)

 

三、__getattr____delattr____setattr__(注意:必须设置参数,参考反射参数

内置的__开头的函数,会在特定情况下自动执行代码。

__init__函数会在调用,或者导入模块包时,自动执行。

__setattr__会在添加、修改属性的时候被触发。

__delattr__会在删除属性的时候被触发。

__getattr__只会在访问属性,且属性不存在的情况下才会触发。

__getattribute__只要访问属性,不能属性存不存在都会触发执行。

 

四、描述符(注意:必须设置参数,参考反射参数)

(注意:描述符当中的__set__()等必须有参数,否则报错,内置方法。)

在一个新式类中,包含了def __set__(self)def __get__(self)def __delete__(self)方法的就叫描述符,所以描述符的本质就是一个新式类。但是描述符(新式类)在操作自身属性时不触发,只有将描述符(这个新式类)组合到其他类中,对这个类进行属性操作,描述符才能够相应触发。

 

 

 

 

 

 

五、__init____str____call____del__的自动触发条件。

 

__str__是用来改变对象的值,print时触发,且返回值必须是字符串类型。

 

posted @ 2018-12-20 20:03  学习汪  阅读(160)  评论(0编辑  收藏  举报