From 875ecc2c28b7cec72cefc1d4420071462a4d5013 Mon Sep 17 00:00:00 2001 From: JackLee <809262979@qq.com> Date: Sun, 16 Feb 2025 17:17:05 +0800 Subject: [PATCH] update --- nxopen_python.py | 50 +++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/nxopen_python.py b/nxopen_python.py index 12fa85f..9b781fd 100644 --- a/nxopen_python.py +++ b/nxopen_python.py @@ -25,38 +25,36 @@ def f_type(sub): if not attr_name.startswith('__') and not attr_name.startswith('builtin_function_or_method'): return type(attr).__name__ +#输出代码缩进级别 +def print_with_indent(indent_level): + indent = " " * indent_level + return indent + +def print_with(cls_name,head_str,indent_level): + if not cls_name.startswith('__') and not cls_name.startswith('_'): + lw.WriteLine(f"{print_with_indent(indent_level)}{head_str}:{cls_name}") def main(): for module in modules: - lw.WriteLine(f"-------------module name: {module.__name__}-------------") + lw.WriteLine(f"module name:{module.__name__}") classes = inspect.getmembers(module) for cls_name,cls in classes: - # 过滤掉以双下划线开头的成员 - if not cls_name.startswith('__') and not cls_name.startswith('_'): - lw.WriteLine(f"class: {module.__name__}.{cls_name}") - # 获取类的所有成员 - subs = inspect.getmembers(cls,inspect.isclass) - for sub_name, sub in subs: - if not sub_name.startswith('__'): - lw.WriteLine(f" types:{sub_name}") - attrs=inspect.getmembers(sub) - for attr_name,attr in attrs: - if not attr_name.startswith('__'): - lw.WriteLine(f" attr:{attr_name}:{type(attr).__name__}") + print_with(cls_name,"class",1) + subs = inspect.getmembers(cls) + for sub_name,sub in subs: + if inspect.isclass(sub): + print_with(sub_name,"class",2) + attrs=inspect.getmembers(sub) + for attr_name,attr in attrs: + if attr_name not in ('ValueOf', 'mro'): + print_with(attr_name,"attribute",3) + elif inspect.ismethoddescriptor(sub): + print_with(sub_name,"method",2) + #lw.WriteLine(f"{sub}") + else: + print_with(sub_name,"attribute",2) - funcs = inspect.getmembers(cls) - for func_name, func in funcs: - _type=type(func).__name__ - # 过滤掉以双下划线开头的成员 - if not func_name.startswith('__') and not func_name.startswith('_'): - #过滤掉影响阅读的成员 - if not (type(func).__name__).startswith('method_descriptor') \ - and not (type(func).__name__).startswith('getset_descriptor') \ - and not (type(func).__name__).startswith('builtin_function_or_method') \ - and not (type(func).__name__).startswith('type'): - _type=type(func).__name__ - lw.WriteLine(f" func:{func_name}:{_type}") - + if __name__ == '__main__': #"----------该脚本屏蔽内容如下:-----------" #"__"