dict[key]
key
- ключ словаряkey
Операция dict[key]
вернет элемент словаря dict
с ключом key
. Операция вызывает исключение KeyError
, если ключ key
отсутствует в словаре.
Если подкласс dict
определяет метод __missing__()
и ключ отсутствует, операция d[key]
вызывает этот метод с ключом key
в качестве аргумента. Затем операция d[key]
возвращает или вызывает все, что было возвращено или вызвано вызовом __missing__(key)
. Никакие другие операции или методы не вызывают __missing__()
. Если __missing__()
не определен, то возникает KeyError
.
__missing__()
должен быть методом, он не может быть переменной экземпляра.
>>> class Counter(dict):
... def __missing__(self, key):
... return 0
>>> c = Counter()
>>> c['red']
0
>>> c['red'] += 1
>>> c['red']
1
В приведенном выше примере показана часть реализации collections.Counter
.
>>> x = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
>>> x['two']
# 2
>>> x['four']
# 4
>>> x['ten']
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# KeyError: 'ten'