rspec/rules/S2710/python/rule.adoc

60 lines
1.7 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
2021-04-28 16:49:39 +02:00
By convention, the first argument to class methods, i.e. methods decorated with ``++@classmethod++``, is named ``++cls++`` as a representation and a reminder that the argument is the class itself. Name the argument something else, and you stand a good chance of confusing both users and maintainers of the code. It might also indicate that the ``++cls++`` parameter was forgotten, in which case calling the method will most probably fail. This rule also applies to methods ``++__init_subclass__++``, ``++__class_getitem__++`` and ``++__new__++`` as their first argument is always the class instead of "self".
By default this rule accepts ``++cls++`` and ``++mcs++``, which is sometime used in metaclasses, as valid names for class parameters. You can set your own list of accepted names via the parameter ``++classParameterNames++``.
This rule raises an issue when the first parameter of a class method is not an accepted name.
=== Noncompliant code example
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,python]
2021-04-28 16:49:39 +02:00
----
class Rectangle(object):
@classmethod
def area(bob, height, width): #Noncompliant
return height * width
----
=== Compliant solution
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,python]
2021-04-28 16:49:39 +02:00
----
class Rectangle(object):
@classmethod
def area(cls, height, width):
return height * width
----
== Resources
2021-04-28 16:49:39 +02:00
* PEP8 - https://www.python.org/dev/peps/pep-0008/#function-and-method-arguments[Function and Method Arguments]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::message.adoc[]
include::parameters.adoc[]
include::highlighting.adoc[]
'''
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]