Как «k in d» может быть ложным, а «k in d.keys ()» - истинным?

У меня есть код на Python, который генерирует исключение KeyError. Пока мне не удалось воспроизвести за пределами операционной среды, поэтому я не могу опубликовать сокращенный тестовый пример здесь.

Код, вызывающий исключение, повторяется через цикл, подобный этому:

for k in d.keys():
    if condition:
        del d[k]

строка del [k] вызывает исключение. Я' Мы добавили вокруг него предложение try / except и смогли определить, что k в d ложно, но k в d.keys () истинно .

Ключи d являются связанными методами экземпляров классов старого стиля.

Класс реализует __ cmp __ и __ hash __ , так что именно здесь я сосредоточил мое внимание.

7
задан SilentGhost 27 October 2010 в 17:55
поделиться