Python如何获取模块中类以及类的属性方法信息

 更新时间:2021年12月13日 09:34:37   作者:小黑测试员  
python对属性权限的控制是通过属性名来实现的,下面这篇文章主要给大家介绍了关于Python如何获取模块中类以及类的属性方法信息的相关资料,需要的朋友可以参考下

一、sys.modules模块

sys.modules是一个全局字典,python启动后就将该字典加载在内存中,每当导入新的模块时sys.modules都将记录这些导入模块。字典sys.modules对于加载模块起到了缓冲的作用。

sys.modules拥有字典所拥有的一切方法。如:

import sys
print(sys.modules[__name__])
print(sys.modules.values())
print(sys.modules.keys())
print(sys.modules.items())
#示例
print(sys.modules.get("demo2"))
#输出
<module 'demo3' from 'G:\\BaiXXXYuan\\BaiXXXXYuanApi\\demo3.py'>

二、inspect模块

inspect模块主要提供了四种用处:

  1.对对象进行类型检查

  2.获取源码

  3.获取类或者函数的参数信息

  4.解析堆栈

  • inspect.getmembers(object[, predicate])

返回一个包含对象的所有成员(name, value)的列表。返回的内容比对象的dict包含的内容多,源码是通过dir()实现的。

predicate是一个可选的函数参数,只有predicate函数判断为True的成员才被返回。

  • predicate一般调用以下16个方法
inspect.ismodule(object): 是否为模块
inspect.isclass(object):是否为类
inspect.ismethod(object):是否为方法(bound method written in python)
inspect.isfunction(object):是否为函数(python function, including lambda expression)
inspect.isgeneratorfunction(object):是否为python生成器函数
inspect.isgenerator(object):是否为生成器
inspect.istraceback(object): 是否为traceback
inspect.isframe(object):是否为frame
inspect.iscode(object):是否为code
inspect.isbuiltin(object):是否为built-in函数或built-in方法
inspect.isroutine(object):是否为用户自定义或者built-in函数或方法
inspect.isabstract(object):是否为抽象基类
inspect.ismethoddescriptor(object):是否为方法标识符
inspect.isdatadescriptor(object):是否为数字标识符,数字标识符有__get__ 和__set__属性; 通常也有__name__和__doc__属性
inspect.isgetsetdescriptor(object):是否为getset descriptor
inspect.ismemberdescriptor(object):是否为member descriptor

inspect其他方法

inspect.getdoc(object): 获取object的documentation信息
inspect.getcomments(object)
inspect.getfile(object): 返回对象的文件名
inspect.getmodule(object):返回object所属的模块名
inspect.getsourcefile(object): 返回object的python源文件名;object不能使built-in的module, class, mothod
inspect.getsourcelines(object):返回object的python源文件代码的内容,行号+代码行
inspect.getsource(object):以string形式返回object的源代码
inspect.cleandoc(doc):

三、python获取模块中所有类的实例

demo2文件

class A():
    def __init__(self):
        self.A = "A"
​
    def run(self):
        print(self.A)

demo3文件

class D():
    
    def __init__(self):
        self.D = "D"
​
    def d(self):
        print(self.D)

demo文件

from demo import A
import demo2
import inspect
import sys
​
​
class B(A):
​
    def __init__(self):
        self.B1 = "B"
​
    def run(self):
        print(self.B1)
​
​
class C(A):
​
    def __init__(self):
        self.C1 = "C"
​
    def run(self):
        print(self.C1)
​
​
if __name__ == '__main__':
    print(sys.modules.get("demo3"))
    class_list = []
    print(inspect.getmembers(sys.modules[__name__], inspect.isclass))
    print(inspect.getmembers(sys.modules.get("demo3"), inspect.isclass))
    for name, class_ in inspect.getmembers(sys.modules[__name__], inspect.isclass):
        class_list.append(class_)
        class_().run()
​
    print(class_list)
​
​
#输出
<module 'demo3' from 'G:\\BaiGuoYuan\\BaiGuoYuanApi\\demo3.py'>
[('A', <class 'demo2.A'>), ('B', <class '__main__.B'>), ('C', <class '__main__.C'>)]
[('D', <class 'demo3.D'>)]
A
B
C
[<class 'demo2.A'>, <class '__main__.B'>, <class '__main__.C'>]

总结

到此这篇关于Python如何获取模块中类以及类的属性方法信息的文章就介绍到这了,更多相关Python获取模块中类及属性方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python制作一个汇率换算程序

    基于Python制作一个汇率换算程序

    这篇文章主要为大家详细介绍了如何利用Python语言制作一个汇率换算程序,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2022-09-09
  • python利用ffmpeg进行录制屏幕的方法

    python利用ffmpeg进行录制屏幕的方法

    今天小编就为大家分享一篇python利用ffmpeg进行录制屏幕的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python中import的用法陷阱解决盘点小结

    Python中import的用法陷阱解决盘点小结

    这篇文章主要为大家介绍了Python中import的用法陷阱解决盘点小结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Python telnet登陆功能实现代码

    Python telnet登陆功能实现代码

    这篇文章主要介绍了Python telnet登陆功能实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python打开与读取文件操作的常用方法

    Python打开与读取文件操作的常用方法

    这篇文章主要介绍了Python打开与读取文件操作的常用方法,通过编写代码自动化操作文件,读写文件、打开文件、写入文件、删除文件一系列都称作为电脑的操作,需要的朋友可以参考下
    2023-07-07
  • python3的UnicodeDecodeError解决方法

    python3的UnicodeDecodeError解决方法

    这篇文章主要介绍了python3的UnicodeDecodeError解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 如何利用python的tkinter实现一个简单的计算器

    如何利用python的tkinter实现一个简单的计算器

    这篇文章主要给大家介绍了关于如何利用python的tkinter实现一个简单的计算器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 和孩子一起学习python之变量命名规则

    和孩子一起学习python之变量命名规则

    这篇文章我们给大家总结了关于儿童学习python中的变量命名规则相关知识点内容,有兴趣的朋友跟着参考学习下。
    2018-05-05
  • python编程实现希尔排序

    python编程实现希尔排序

    这篇文章主要介绍了python实现希尔排序,已编程实现的希尔排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Python中数据类转换为JSON的方法详解

    Python中数据类转换为JSON的方法详解

    这篇文章主要介绍了Python中数据类转换为JSON的方法详解的相关资料,需要的朋友可以参考下
    2023-09-09

最新评论