Следующий код сталкивается с бесконечным l oop:
class SubCommandMap:
def __init__(self):
self._command = dict()
def __getitem__(self, key):
return self._command.get(key)
def __setitem__(self, key, value):
self._command[key] = value
m = SubCommandMap()
" " in m # <- why is this an infinite loop?
Конечно, это ошибка. m
предполагалось, что это другой объект другого типа. Но почему это заканчивается бесконечным l oop вместо выдачи исключения?
Я добавил следующий метод:
def __contains__(self, other):
raise NotImplementedError()
Теперь я получаю соответствующее сообщение об ошибке.
Есть ли другие подобные случаи, когда мне нужно быть осторожным, чтобы избежать бесконечного l oop?