При написании кода я стараюсь устранить все замечания линтера PyCharm. Но с миксинами сделать это не так просто
Возьмём для примера, вот такой миксин:
Линтер не доволен, т.к. не понимает при чём тут self.request
. Этот вопрос я решал просто, я просто затыкал рот линтеру.
Линтер доволен и молчит, даже если есть явная проблема.
В конце концов, безмолвный линтер стал проблемой, и я решил разобраться в вопросе. Я заглянул в документацию mypy из которой узнал, как можно решить множество замечаний линтера связанные с типами и аннотацией, но не для миксинов. К счастью, я не первый кто задумался об этом, и хоть не с первого раза, я нашёл ответ на StackOverflow, но вам я его не покажу, т.к. не могу найти его снова. Зато я могу показать, как выглядит то, что в итоге получилось:
from typing import TypeVar
T = TypeVar('T')
def mixin_for(_: T) -> T:
return object
Функция mixin_for
позволяет сказать линтеру к какому классу будет подмешиваться миксин.
Заодно получаем автодополнение кода.
На этом всё.
Глоссарий
- миксин - mixin, примесь
- линтер - linter, статический анализатор кода
Top comments (0)