如下例子:
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)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.