Обеспечение соблюдения соглашений об именах функций

Я хотел бы написать плагин 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"

Обычно это вызывает ошибку при импорте неисправного модуля.

Другие вопросы по тегам