86 lines
2.4 KiB
Plaintext
86 lines
2.4 KiB
Plaintext
This rule raises an issue when the first parameter of a class method is not an accepted name.
|
|
|
|
== Why is this an issue?
|
|
|
|
By convention, the first argument in a class method, i.e. methods decorated with ``++@classmethod++``, is named ``++cls++`` as a representation and a reminder that the argument is the class itself. If you were to name the argument something else, you would 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++``.
|
|
|
|
|
|
=== How to fix it
|
|
Follow the naming convention for the first parameter name of a class method.
|
|
|
|
==== Noncompliant code example
|
|
|
|
[source,python,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
class Rectangle(object):
|
|
|
|
@classmethod
|
|
def area(bob, height, width): #Noncompliant
|
|
return height * width
|
|
----
|
|
|
|
|
|
==== Compliant solution
|
|
|
|
[source,python,diff-id=1,diff-type=compliant]
|
|
----
|
|
class Rectangle(object):
|
|
|
|
@classmethod
|
|
def area(cls, height, width):
|
|
return height * width
|
|
----
|
|
|
|
|
|
== Resources
|
|
|
|
=== Documentation
|
|
|
|
* 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)
|
|
|
|
=== Message
|
|
|
|
Rename XXX to a valid class parameter name or add the missing class parameter.
|
|
|
|
|
|
=== Parameters
|
|
|
|
.classParameterNames
|
|
****
|
|
_string_
|
|
|
|
----
|
|
cls,mcs
|
|
----
|
|
|
|
Comma separated list of accepted values for a class parameter.
|
|
****
|
|
|
|
|
|
=== Highlighting
|
|
|
|
The first parameter of the class method.
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 17 Mar 2015, 08:49:57 Elena Vilchik wrote:
|
|
\[~ann.campbell.2] I would suggest label "convention" here
|
|
|
|
=== on 18 Mar 2015, 16:24:14 Ann Campbell wrote:
|
|
There is some question about class vs metaclass method vs instance method. Postponing this rule until that's settled. Updates may be needed at that time.
|
|
|
|
endif::env-github,rspecator-view[]
|