pylint-errors

E1137 (unsupported-assignment-operation)

:x: Problematic code:

class Foo:
    def __init__(self, numbers):
        self.numbers = numbers

    def __getitem__(self, value):
        return self.numbers[value]


foo = Foo([1, 2, 3])
foo[0] = 0
print(foo[0])

:heavy_check_mark: Correct code:

class Foo:
    def __init__(self, numbers):
        self.numbers = numbers

    def __getitem__(self, value):
        return self.numbers[value]

    def __setitem__(self, index, value):
        self.numbers[index] = value


foo = Foo([1, 2, 3])
foo[0] = 0
print(foo[0])

Rationale:

Emitted when an object does not support item assignment (i.e. doesn’t define __setitem__ method).