Обеспечение соблюдения соглашений об именах функций
Я хотел бы написать плагин Pylint, который позволяет мне применять какой-то синтаксис для методов, которые украшены определенным декоратором.
Например, все функции, которые украшены @specialfunction
декоратор, должен начинаться со слова "get_"
@specialfunction
def get_foo(self):
...
@specialfunction
def get_bar(self):
...
Если мой модуль имеет какие-либо методы, которые украшены @specialfunction
но не начинай с get_
, это должно выдать ошибку. Не могли бы вы предложить, как написать такой плагин?
1 ответ
Достаточно ли хорошо выполнять проверку во время выполнения? Это проще, чем написать плагин 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"
Обычно это вызывает ошибку при импорте неисправного модуля.