Python Glossary English

все Python 3ООПфункция

__setitem__

магические методы

Метод записи по индексу или ключу: obj[k] = v вызывает obj.__setitem__(k, v).

Синтаксис

def __setitem__(self, key, value): ...

Без __setitem__ присваивание по индексу даёт TypeError: 'object does not support item assignment' — так ведут себя кортежи и строки. Парный метод __delitem__ отвечает за del obj[k]. В __setitem__ удобно проверять значение до записи — это место для валидации.

Примеры

class Grades:
    def __init__(self):
        self._data = {}
    def __setitem__(self, name, score):
        if not 0 <= score <= 100:
            raise ValueError(f'оценка {score} вне 0..100')
        self._data[name] = score
    def __getitem__(self, name):
        return self._data[name]
g = Grades()
g['Анна'] = 95
print(g['Анна'])  # → 95
g['Борис'] = 120  # → ValueError: оценка 120 вне 0..100

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности