代码之家  ›  专栏  ›  技术社区  ›  1729

如何在python中执行monkeypatching?

  •  8
  • 1729  · 技术社区  · 18 年前

    我不得不在python中做一些内省,但它并不漂亮:

    name = sys._getframe(1).f_code
    name = "%s:%d %s()" %(os.path.split(name.co_filename)[1],name.co_firstlineno,name.co_name)
    

    得到类似的东西

    foo.py:22 bar() blah blah
    

    在我们的调试输出中。

    理想情况下,我想用这类信息为stderr做任何准备。-- 是否可以在python中全局更改print的行为?

    2 回复  |  直到 11 年前
        1
  •  3
  •   Curt Hagenlocher    18 年前

    print语句通过“sys.stdout.write”执行其IO,因此如果要操作打印流,可以重写sys.stdout。

        2
  •  1
  •   Pat Notz    18 年前

    蟒蛇 inspect 模块使这更容易和更清洁。