Property getter, setter and deleter methods are called by the python interpreter with a specific number or arguments: * only "self" for property getter and deleter methods. * "self" and a value for setter methods. Adding any other parameter, or removing these mandatory parameters will make method calls fail. This rule raises an issue when: * too many parameters are defined in a property getter, setter or deleter method. * the value parameter is missing in a property setter method. == 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 * https://docs.python.org/3/library/functions.html#property[Python Documentation - Built-in Functions - property]