自省,简单的说就是使用一些机制实现自我检查,程序员可以使用这些机制查看各个对象或类型的信息。
python中的自省机制:
help:
help():查看python自带的帮助文档信息。
help(arg):查看类型或对象所对映的类型信息,arg为类型或对象的变量、名称或名称字符串形式
注:help(None)抛出AttributeError异常:ModifiedInterpreter instance has no attribute 'interp'
dir:
dir():查看当前模块所有的类,对象,方法
dir(arg):查看类型或对象的成员,arg为类型名称或对象变量
type:
type(arg):返回对象的类型(不是字符串形式)。
type("string") => str
type([]) => list
type({}) => dict
type(1) => int
type(1.0) => float
type(False) => bool
type(None) => NoneType
type(自定义类型) => classobj
type(自定义类型对象) => instance
type(sys) => module
type(file) => type
id:
id(arg):返回对象的"唯一序号",数字字符串,其中,对于引用类型返回的是被引用对象的id,arg为类型名称或对象变量
callable:
callable(arg):判断对象是否可以调用,返回True的有类和类的方法,对象和对象的方法。
isinstance:
isinstance(var,class):确定某个变量是否是某种类型。
注:isinstance(var,type(var)) => True
hasattr和getattr:
hasattr(obj,'attrName')和getattr(obj,'attrName')分别判断对象是否有某个属性或获取某个属性值
注:获取不存在的属性值,抛出AttributeError异常。