все Python 3ООПфункция
__getitem__
магические методы
Метод чтения по индексу или ключу: obj[k] вызывает obj.__getitem__(k). Срез приходит объектом slice.
Синтаксис
def __getitem__(self, key): ...
Одного __getitem__ с целыми индексами хватает, чтобы объект стал итерируемым: for перебирает 0, 1, 2… до IndexError. Для отображений принято бросать KeyError, для последовательностей — IndexError: на этом различии держатся dict.get и итерация. Запись obj[1:3] передаёт slice(1, 3, None).
Примеры
class Squares:
def __getitem__(self, i):
if i >= 5:
raise IndexError(i)
return i * i
s = Squares()
print(s[3]) # → 9
print(list(s)) # → [0, 1, 4, 9, 16] — итерация через __getitem__
class Show:
def __getitem__(self, key):
return key
print(Show()[1:3]) # → slice(1, 3, None)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности