如下例子:
foo() 方法没有使用装饰器进行参数校验,这个时候 IDE 的参数智能提示会告诉我参数是 param1, param2
bar() 方法使用了装饰器就行参数校验,这个时候 IDE 的参数智能提示变成了被装饰后的方法 validate,IDE 告诉我参数是 *args, **kwargs
请问有什么办法可以让使用了装饰器之后 IDE 还是按照原方法的参数进行提示呢?
from functools import wraps
def validate_params(func):
"""
入参格式校验
"""
@wraps(func)
def validate(*args, **kwargs):
invalid_params = [key for key, value in kwargs.items() if value is None]
if invalid_params:
print('%s 参数非法' % str.join(',', invalid_params))
return func(*args, **kwargs)
return validate
def foo(param1, param2):
# 有什么办法可以让使用了装饰器之后 IDE 的参数提示是「 param1, param2 」
pass
@validate_params
def bar(param1, param2):
pass
if __name__ == '__main__':
foo(param1='IDE 智能提示:「 param1, param2 」', param2='没有使用装饰器进行参数校验')
bar(param1='IDE 智能提示:「*args, **kwargs 」', param2=None)