Я наткнулся на новый декоратор override для Python 3.12, и это выглядит как очень хорошая практика.
Мне интересно, есть ли способ сделать его «обязательным» для использования? Возможно, есть какой-нибудь способ настроить mypy
для этого? Или хотя бы настроить линтеры, чтобы они выдавали предупреждения.
from typing import override
class Base:
def log_status(self) -> None:
...
class Sub(Base):
@override # I would like to make it mandatory while overriding a method
def log_status(self) -> None:
...
В Mypy для этого есть специальное правило: явное переопределение.
Поместите следующее в свой pyproject.toml
, чтобы включить его:
[tool.mypy]
enable_error_code = "explicit-override"
Это также можно использовать в mypy.ini и других файлах конфигурации Mypy читает, но это остается в качестве упражнения для читателя.
Альтернативно вы можете передать --enable-error-code explicit-override
инструменту командной строки или поместить комментарий конфигурации в свой файл:
# mypy: enable-error-code=explicit-override
class Sub(Base):
# error: Method "..." is not using @override but is overriding a method in class "..."
def log_status(self) -> None: ...