作用
inspect
是用来获取对象的信息,这个对象可以为- 模块(往往是一个py文件)
- 类
- 方法
- 函数
- 报错追踪
- 帧对象
- 代码对象
- 它能用来帮助你检验类的内容,检索一个方法的源代码,提取并格式化函数的参数列表等等
语法
inspect.getmembers(object[,predicate])
- 函数返回一个列表,列表中包含是个key,value的元祖
- key是对象拥有的属性,value是具体的函数
返回类所有的成员
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
return self.name
def set_name(self, name):
self.name = name
if __name__ == "__main__":
import inspect
print(inspect.getmembers(Person))
返回实例所有的成员
person = Person("sunwukong",18)
print(inspect.getmembers(person))
predicate
这个需要是一个函数,用来过滤符合条件成员
person = Person("sunwukong", 18)
print(inspect.getmembers(person, lambda _i: isinstance(_i, str)))
结果
[('__module__', '__main__'), ('name', 'sunwukong')]
inspect.getmodulename(path)
输入一个路径返回模块的名字
print(inspect.getmodulename("F:\my_profile\study\code_pub\study_code_pub\python\模块\inspect\main.py"))
输出
main
一些检测方法
inspect.ismodule(object)
:检测object是否为模块inspect.isclass(object)
检测object是不是一个类inspect.ismethod(object)
:检测object是不是一个方法