我想编写一个Pylint插件,允许我对使用某个装饰器修饰的方法强制执行某种语法。
例如,用@specialfunction
装饰器装饰的所有函数必须以单词&#34开头;得到_"
@specialfunction
def get_foo(self):
...
@specialfunction
def get_bar(self):
...
如果我的模块有任何方法用@specialfunction
修饰但不以get_
开头,则应该抛出错误。你能否建议如何编写这样的pylint插件?
答案 0 :(得分:0)
在运行时检查是否足够好?它比编写Pylint插件更容易:
def specialfunction(f):
if not f.__name__[:4] == 'get_':
raise TypeError("Can't use the decorator on a non-get function")
return f
@specialfunction
def get_foo(x):
return "foo"
@specialfunction # TypeError raised here
def bar(y, z):
return "bar"
导入违规模块时,这通常会引发错误。