有没有办法在Python中检查函数的签名?

2024-01-28

我正在寻找一种方法来检查 Python 中给定函数接受的参数数量。目的是实现一种更健壮的方法来修补我的类以进行测试。所以,我想做这样的事情:

class MyClass (object):
    def my_function(self, arg1, arg2):
        result = ... # Something complicated
        return result

def patch(object, func_name, replacement_func):
    import new

    orig_func = getattr(object, func_name)
    replacement_func = new.instancemethod(replacement_func, 
                           object, object.__class__)

    # ...
    # Verify that orig_func and replacement_func have the 
    # same signature.  If not, raise an error.
    # ...

    setattr(object, func_name, replacement_func)

my_patched_object = MyClass()
patch(my_patched_object, "my_function", lambda self, arg1: "dummy result")
# The above line should raise an error!

Thanks.


inspect.getargspec在 Python 3 中已弃用。请考虑以下内容:

import inspect
len(inspect.signature(foo_func).parameters)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在Python中检查函数的签名? 的相关文章

随机推荐