All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.py.rules.python.S5719.html Maven / Gradle / Ivy

The newest version!

This rule raises an issue when an instance or a class method does not have at least one positional parameter.

Why is this an issue?

Every instance method is expected to have at least one positional parameter. This parameter will reference the object instance on which the method is called. Calling an instance method which doesn’t have at least one parameter will raise a TypeError. By convention, this first parameter is usually named self.

Class methods, i.e. methods annotated with @classmethod, also require at least one parameter. The only differences is that they will receive the class itself instead of a class instance. By convention, this first parameter is usually named cls.

Exceptions

Static methods (methods annotated with the @staticmethod decorator) do not require any positional parameter. This rule will not raise an issue on them.

How to fix it

Adding self as the first parameter of an instance method or cls as the first parameter of a class method will resolve the issue.

Code examples

Noncompliant code example

class MyClass:
    def instance_method():  # Noncompliant: "self" parameter is missing.
        print("instance_method")

    @classmethod
    def class_method():  # Noncompliant: "cls" parameter is missing.
        print("class_method")

Compliant solution

class MyClass:
    def instance_method(self):
        print("instance_method")

    @classmethod
    def class_method(cls):
        print("class_method")

    @staticmethod
    def static_method():
        print("static_method")

Pitfalls

Note that __new__ and __init_subclass__ take a class as first argument even thought they are not decorated with @classmethod.

Resources

Documentation





© 2015 - 2025 Weber Informatics LLC | Privacy Policy