Open qingfengmingjian opened 5 years ago
Python自省 自省:自我检查的行为,如“三省吾身” 计算机中:自省就是用来检查某些事物确定它是什么,它知道什么以及它能做什么 python中常见的自省机制(函数方法)有dir()、type()、hasattr()、isinstance(), 通过这些函数,我们能在程序运行时得知对象的类型,判断对象(类对象、函数对象、变量)是否存在某个属性/方法/函数,访问对象的属性。
import datetime help(datetime)#可看到包里面的代码
import requests print(dir())#不传参数,它默认查当前文件。 print(dir(requests))
print(dir.__doc__) print(help.__doc__)
def a(): print('haha') b = a print(b.__name__) print(a, b) print(type(b))
print(type(a)) print(type(1)) print(type('a')) print(isinstance(1, int))
a = [1, 2, 3] b = [1, 2, 3] c = a print(id(a)) print(id(b)) print(id(c)) print(a is b) print(c is a) print(a==b)
def b(): pass print(callable(help)) print(callable(str)) help(callable)
class A: pass class B(A): pass class C(B): pass print(C.__bases__)#查找父类 print(C.__mro__)#寻找MRO路线(继承关系) print(issubclass(C, A))#比较是不是属于父类
print(hasattr(id, '__doct__'))#只能判断是否有此函数或属性 print(getattr(id, '__doc__'))#返回此类对象的属性信息,不进行判断
Python自省 自省:自我检查的行为,如“三省吾身” 计算机中:自省就是用来检查某些事物确定它是什么,它知道什么以及它能做什么 python中常见的自省机制(函数方法)有dir()、type()、hasattr()、isinstance(), 通过这些函数,我们能在程序运行时得知对象的类型,判断对象(类对象、函数对象、变量)是否存在某个属性/方法/函数,访问对象的属性。
1.联机帮助help()
2.dir()查找模块以及所有的对象类型的方法、函数、属性,只显示名字,不显示具体代码
3.doc文档描述:它包含了描述对象的注释:
4.检查Python对象
①对象的名称name
②对象的类型type() 最好用isinstance()
③变量存放的内存空间的地址id()
④函数对象是否能够被调用callable()
⑤对象的父对象是谁issubclass()
hasattr()/getattr()用来检索属性