自动替换模块

时间:2015-12-23 19:56:34

标签: python python-3.x

我一直在玩easygui,我想知道如果方法有这样的参数,是否有任何方法可以自动覆盖每个方法的title参数默认值。

例如我现在可以这样做:

import easygui

oldf = easygui.boolbox
def newf(title='mytitle', *args):
    oldf(title=title, *args)
easygui.boolbox = newf

有更复杂,更快捷的方法吗?

1 个答案:

答案 0 :(得分:2)

以下是您可以这样做的方法:

import easygui
import inspect
import functools

funcs = [f for f in easygui.__dict__.values() if callable(f)]
for func in funcs:
    sig = inspect.signature(func)
    if 'title' in sig.parameters:
        newf = functools.partial(func, title='mytitle')
        setattr(easygui, func.__name__, newf)