У меня есть пользовательская реализация 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)
, как показано в других местах кода.
Есть идеи, как пройти этот чек?