Python 派林:让它了解装饰师
派林似乎没有考虑到装饰者 我有一个这样的装饰师Python 派林:让它了解装饰师,python,python-decorators,pylint,Python,Python Decorators,Pylint,派林似乎没有考虑到装饰者 我有一个这样的装饰师 @decorator def foo(arg1, arg2): pass 变成 def foo(arg2): pass 但派林一直抱怨我打电话给福的时候,我错过了一场辩论。我不希望禁用此警告,因为即使对于那些修饰过的函数,它也非常有用。有没有办法让它明白,伙计?如果你有这样的事情 def decorator(f): def wrapper(*args, **kwargs): return f(1, *ar
@decorator
def foo(arg1, arg2):
pass
变成
def foo(arg2):
pass
但派林一直抱怨我打电话给福的时候,我错过了一场辩论。我不希望禁用此警告,因为即使对于那些修饰过的函数,它也非常有用。有没有办法让它明白,伙计?如果你有这样的事情
def decorator(f):
def wrapper(*args, **kwargs):
return f(1, *args, **kwargs)
return wrapper
@decorator
def z(a, b):
return a + b
print( z(5) )
一个不需要对代码进行太多更改的简单解决方案是忘记@,这只是语法上的糖分。它对我有用
def z(a, b):
return a + b
z = decorator(z)
print( z(5) )
这是一个已知的问题:
当它保持未修复状态时,除了禁用使用#pylint:disable=missing kwoa
的检查之外,您唯一的选择是通过以下方式解决问题:
@decorator
语法;或或者,4。为pylint项目贡献一个补丁 但这样的警告就不会消失了吗?如果它能理解我的意思。假设不是这样。你是说使用
foo('one-argument')
的代码被标记为无效,因为修饰符传入了额外的参数?如果我写foo('bar'))
它将'bar'
解释为arg1
,并抱怨缺少参数arg2
。这很好,还解决了autospec的模拟问题。对丑陋的语法感到羞耻。