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): ...
Безопасность исправления
Автоматическое исправление этого правила помечено как небезопасное, так как переименование параметра метода может изменить поведение программы.