Ruff invalid-first-argument-name-for-class-method (N804)

invalid-first-argument-name-for-class-method в Ruff проверяет, что первый аргумент метода класса называется cls.

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

PEP 8 рекомендует всегда использовать cls в качестве первого аргумента для методов класса:

  • Всегда используйте cls как имя первого аргумента в методах класса.
  • Если имя аргумента функции конфликтует с зарезервированным словом, лучше добавить к нему завершающее подчеркивание (например, class_ вместо clss), а не искажать написание.

Следование этому правилу делает код более читаемым и понятным.

Метод __new__ исключён из этой проверки, так как соответствующее нарушение выявляется правилом bad-staticmethod-argument.

Можно настроить исключения для этого правила, используя параметры lint.pep8-naming.ignore-names или lint.pep8-naming.extend-ignore-names. Например, чтобы разрешить использование klass в качестве первого аргумента в методах класса, установите lint.pep8-naming.extend-ignore-names в ["klass"].

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

class Example:
    @classmethod
    def function(self, data): ...

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

class Example:
    @classmethod
    def function(cls, data): ...

Безопасность исправления

Автоматическое исправление этого правила помечено как небезопасное, так как переименование параметра метода может изменить поведение программы.