Property getter, setter and deleter methods are called by the python interpreter with a specific number or arguments:

Adding any other parameter, or removing these mandatory parameters will make method calls fail.

This rule raises an issue when:

Noncompliant Code Example

class A:
    @property
    def foo(self, unexpected, unexpected2):  # Noncompliant. Too many parameters.
        return self._foo

    @foo.setter
    def foo(self, value, unexpected):  # Noncompliant. Too many parameters.
        self._foo = value

    @foo.deleter
    def foo(self, unexpected):  # Noncompliant. Too many parameters.
        del self._foo

class B:
    def get_foo(self, unexpected):  # Noncompliant. Too many parameters.
        return self._foo

    def set_foo(self, value, unexpected):  # Noncompliant. Too many parameters.
        self._foo = value

    def del_foo(self, unexpected):  # Noncompliant. Too many parameters.
        del self._foo

    foo = property(get_foo, set_foo, del_foo, "'foo' property.")

Compliant Solution

class A:
    @property
    def foo(self):
        return self._foo

    @foo.setter
    def foo(self, value):
        self._foo = value

    @foo.deleter
    def foo(self):
        del self._foo

class B:
    def get_foo(self):
        return self._foo

    def set_foo(self, value):
        self._foo = value

    def del_foo(self):
        del self._foo

    foo = property(get_foo, set_foo, del_foo, "'foo' property.")

See