gpt4 book ai didi

python - 装饰标准python模块

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:04 24 4
gpt4 key购买 nike

我想用记录器装饰模块中的每个函数(在我的例子中是 curses),但以前没有做过这样的事情。你能告诉我在哪里可以阅读一些文档吗?

我想要这样的东西:

import curses as mycurses
import curses_wrapper as curses

其中 curses_wrapper 是我的模块,应该捕获所有对 whatevermodulefunctions 的调用,记录它,然后调用“真正的”curses 函数。

出于好奇:我在 Windows 上使用 PyCharm,想调试一个 curses 程序。由于 PyCharm 无法为我提供终端,因此我无法真正调试程序。

最佳答案

您可以 iterate over all of the functions in a module ,装饰它们,然后将装饰后的版本添加到您自己的命名空间中。你不能重复这个过程,因为我们的基本 Namespace 对象不能很好地与 inspect 一起玩,但我相信这可以扩展以支持那个东西如果需要的话。

import inspect
import types

class Namespace(object):
pass

def decorate_module(module, decorator):
namespace = Namespace()
for n,v in inspect.getmembers(module):
if isinstance(v, types.FunctionType):
v = decorator(v)
setattr(namespace, n, v)
return namespace

def foo_decorator(f):
def foo_func(*args, **kwargs):
print("foo!")
return f(*args, **kwargs)
return foo_func

inspect = decorate_module(inspect, foo_decorator)

print(inspect.ismodule(inspect))

foo!
False

关于python - 装饰标准python模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24036752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com