Обновление Python Dict из Custom Dict - PullRequest
2 голосов
/ 20 января 2011

У меня есть пользовательская реализация dict, которая переопределяет и в целом поддерживается родным Python dict. Однако при установке он выполняет некоторую предварительную обработку значения и сохраняет его в каком-то проприетарном объекте. При получении этот собственный объект затем преобразуется в более естественный формат.

Все функции при вызове из этого пользовательского режима ведут себя так, как мне нравится.

Проблема в том, что когда вы вызываете что-то вроде {'a': 1} .update (custom_dict ({'b': 2})), значение для 'b' в обновленном dict является собственным объектом внутренней памяти , а не обработанное значение.

Как работает собственное обновление в Python. Я переопределил все методы, которые мог придумать, используя, items, iteritems, values, itervalues, get и __getitem__, но я, похоже, не прибил ни одного из Обновление пытается получить доступ, что заставляет меня поверить, что это может быть использование кода c. Мысли? * * 1013

- Обновление -

Я только что нашел это в исходном коде Python:

if (PyDict_Check(b)) {
    ...
}
else {
    /* Do it the generic, slower way */
    ...
}

Возможно, это ошибка, и она должна быть PyDict_CheckExact(b), как показано в других местах кода.

Есть идеи, как пройти этот чек?

1 Ответ

1 голос
/ 20 января 2011

Проверьте, ответ лежит здесь: Подклассификация словаря Python для переопределения __setitem __

Парень, который разместил вопрос, также опубликовал ответ (он принят). надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...