Использование подкласса dict, где ожидается dict - PullRequest
0 голосов
/ 13 октября 2011

Функция A получает в качестве аргумента обычный dict и выполняет некоторую обработку.

def A(dict):
    ...
    return

Теперь у меня есть класс, унаследованный от обычного класса dict:

class MyDict(dict):
    def __getitem__(self, key):
        return dict.__getitem__(self, key)
    def __setitem__(self, key, val):
        dict.__setitem__(self, key, val)

Тогда я могу использовать MyDict вместо обычного dict как:

my_dict = MyDict()
A(my_dict)

В частности, в моем случае A выполняет сериализацию xml-rpc, а ошибка говорит, что не может маршалировать MyDict.

1 Ответ

2 голосов
/ 13 октября 2011

Это полностью зависит от того, что делает A().Если он просто вызывает протокол отображения, то вы можете использовать его без проблем.Если требуется больше информации о переданном типе, есть вероятность, что он не будет работать правильно.

...