Ruff dunder-function-name (N807)

dunder-function-name в Ruff проверяет, что функции с "dunder" именами (то есть с двумя подчеркиваниями в начале и в конце) используются только, если они документированы в Python.

Почему это неправильно

PEP 8 рекомендует использовать "dunder" имена только в случаях, когда они официально задокументированы:

  • "Магические" (dunder) объекты или атрибуты, такие как __init__, __import__ или __file__, предназначены для особых случаев, определенных в Python.
  • Никогда не создавайте собственные "dunder" имена, так как это может привести к путанице и конфликтам с внутренними механизмами Python.

Использование нестандартных "dunder" имен функций может нарушить предсказуемость кода и вызвать неожиданные ошибки.

Пример ошибки

def __my_function__():
    pass  # Некорректное использование "dunder" имени

Как правильно

def my_function():
    pass  # Обычное имя функции без "dunder"