все 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Сообщить о неточности