美文网首页
2020-08-27 python取该函数调用者的模块文档注释或

2020-08-27 python取该函数调用者的模块文档注释或

作者: 昨天今天下雨天1 | 来源:发表于2020-08-27 17:40 被阅读0次

    随着自动化脚本的增多,框架变得臃肿,有些公用函数改动变得困难。
    现在想在运行时,打印出脚本的文档注释,但不能所有脚本都改一次。
    所以在入口函数中加入:

    inspect.getmodule(inspect.stack()[1][0]).doc

    inspect.stack()取该函数的栈信息,第一个是函数本身的信息,第二个是调用这个函数的调用者的信息。
    通过inspect.getmodule()方法,取调用者的模块对象,然后打印出doc属性就可以了

    举例:
    test_1.py

    #!/usr/bin/python
    # -*- encoding=utf8 -*-
    
    import inspect
    
    
    def b():
        print("b()")
    
        # 取模块注释
        the_class = inspect.getmodule(inspect.stack()[1][0]).__doc__
    
        print the_class
    
    
    if __name__ == '__main__':
        b()
    
    

    test_2.py

    #!/usr/bin/python
    # -*- encoding=utf8 -*-
    
    """
        取我!模块文档注释!
    """
    
    import test_1 as t
    
    
    def c():
        print t.b()
    
    
    if __name__ == '__main__':
        c()
    
    

    还有一种取调用者的类文档注释的方法,如下:

    #!/usr/bin/python
    # -*- encoding=utf8 -*-
    
    import inspect
    
    
    class A:
        """
        取我!类文档注释
        """
    
        def a(self):
            print("A.a()")
            B().b()
    
    
    class B:
        def b(self):
            print("B.b()")
    
            # 取类的注释
            the_class = inspect.stack()[1][0].f_locals["self"].__doc__
    
            print the_class
    
    
    if __name__ == '__main__':
        A().a()
    
    

    目前由于工作需要,转战python2.7
    =.=!

    相关文章

      网友评论

          本文标题:2020-08-27 python取该函数调用者的模块文档注释或

          本文链接:https://www.haomeiwen.com/subject/hiqhsktx.html