一、isinstance()和issubclass()命令
1、isinstance(对象,类型)
用来判定该对象是不是此类型或者说是该对象是不是此类的对象,返回结果为True和False,如图所示。
注:在python3中类和类型做了统一,都叫做类。
2、issubclass(对象(子类),对象(父类))
用来判定该对象是不是该父类的子类,返回的结果为True或False,如图所示。
二、反射
1、什么是反射?
反射就相当于程序能检测,访问和修改他本身状态和行为的一种能力,相当于自省。
2、python面向对象中的反射是通过字符串的形式操作对象的相关属性。因为python中一切事物都是对象,所以都可以使用反射。
3、类和对象中的反射(自省)。
3.1hasattr(object,name)
用来判断该类或对象中是否有name这个属性,返回的结果为True或者是False。
3.2getattr(object,name,none)
用来获取该类或对像的name属性,如果有返回正确结果,没有则报错。
3.3setattr(object,属性名,属性值)
用来添加该类或对象的属性。
4.3defattr(object,name)
用来删除该类或对象的属性。
4.5、以上四个反射的方法传入的值都是字符串的形式,就相对与操作类或对象所对应的字典的key和value。
其好处如下图:
4.6反射的好处:实现可插拔机制和动态导入模块。
三、__str__内置函数
1、该内置函数的主要目的是改变对象的显示。
2、示例:
注释:不加__str__,执行print(egon)时按照正常方式显示为绑定方法,加上__srt__后就会显示为__str__内指定的内容了。四、描述符。
1、__del__:当该对象被删除时执行此函数内的操作。
2、eg:
注释:对象被删除的方式有两种,一种是手动删除后执行__del__函数,另一种是读取完该对象时执行__del__函数。