执行函数命名约定

时间:2016-04-19 11:21:51

标签: python pylint

我想编写一个Pylint插件,允许我对使用某个装饰器修饰的方法强制执行某种语法。

例如,用@specialfunction装饰器装饰的所有函数必须以单词&#34开头;得到_"

@specialfunction
def get_foo(self):
 ...


@specialfunction
def get_bar(self):
 ...

如果我的模块有任何方法用@specialfunction修饰但不以get_开头,则应该抛出错误。你能否建议如何编写这样的pylint插件?

1 个答案:

答案 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"

导入违规模块时,这通常会引发错误。