DEV Community

Cover image for Аннотация типов в миксинах
Гимаев Наиль
Гимаев Наиль

Posted on

Аннотация типов в миксинах

При написании кода я стараюсь устранить все замечания линтера PyCharm. Но с миксинами сделать это не так просто
Возьмём для примера, вот такой миксин:
image
Линтер не доволен, т.к. не понимает при чём тут self.request. Этот вопрос я решал просто, я просто затыкал рот линтеру.
image
Линтер доволен и молчит, даже если есть явная проблема.
В конце концов, безмолвный линтер стал проблемой, и я решил разобраться в вопросе. Я заглянул в документацию mypy из которой узнал, как можно решить множество замечаний линтера связанные с типами и аннотацией, но не для миксинов. К счастью, я не первый кто задумался об этом, и хоть не с первого раза, я нашёл ответ на StackOverflow, но вам я его не покажу, т.к. не могу найти его снова. Зато я могу показать, как выглядит то, что в итоге получилось:

from typing import TypeVar

T = TypeVar('T')


def mixin_for(_: T) -> T:
    return object
Enter fullscreen mode Exit fullscreen mode

Функция mixin_for позволяет сказать линтеру к какому классу будет подмешиваться миксин.
image
Заодно получаем автодополнение кода.

На этом всё.

Глоссарий

  • миксин - mixin, примесь
  • линтер - linter, статический анализатор кода

Top comments (0)