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