[英]decorate standard python module
我想用記錄器來裝飾模塊中的每個功能(以我的情況為例),但是之前沒有做過這樣的事情。 您能告訴我在哪里閱讀一些文檔。
我想要類似的東西:
import curses as mycurses
import curses_wrapper as curses
其中curses_wrapper是我的模塊,應該捕獲對所有模塊函數的所有調用,將其記錄下來,然后再調用“真正的” curses函數。
出於好奇:我在Windows上使用PyCharm,並想調試curses程序。 由於PyCharm無法為我提供終端,因此我無法真正調試程序。
您可以遍歷模塊中的所有功能 ,裝飾它們,然后將裝飾的版本添加到您自己的命名空間中。 您不能重復此過程,因為我們的基本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!
假
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.