簡體   English   中英

裝飾標准python模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM