pyclbr:类浏览器-扫描类


pyclbr公布了两个公共函数。第一个是readmodule(),它以模块名作为参数,并返回一个映射,将类名映射到Class对象(其中包含有关源代码的元数据)。

import pyclbr
    import os
    from operator import itemgetter

    def show_class(name,class_data):
        print('Class:',name)
        filename = os.path.basename(class_data.file)
        print('  File:{0} [{1}]'.format(
            filename,class_data.lineno))
        show_super_classes(name,class_data)
        show_methods(name,class_data)
        print()


    def show_methods(class_name,class_data):
        for name,lineno in sorted(class_data.methods.items(),
                                  key=itemgetter(1)):
            print('  Method:{0} [{1}]'.format(name,lineno))

    def show_super_classes(name,class_data):
        super_class_names = []
        for super_class in class_data.super:
            if super_class == 'object':
                continue
            if isinstance(super_class,str):
                super_class_names.append(super_class)
            else:
                super_class_names.append(super_class.name)
        if super_class_names:
            print('  Super classes:',super_class_names)

    example_data = pyclbr.readmodule('pyclbr_example')
    for name,class_data in sorted(example_data.items(),
                                   key=lambda x: x[1].lineno):
        show_class(name,class_data)

类的源数据包括定i一这个类的文件及所在的行号,还包括超类的类名。类的方法被保存为方法名与行号之间的一个映射。输出显示了这些类和方法(按其在源文件中行号的顺序列出)。


原文链接:https://blog.csdn.net/weixin_43193719/article/details/96562438?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase