martineau
martineau

Reputation: 123531

How to achieve the functionality of UserDict.DictMixin in Python 3?

In Python 3 the UserDict.DictMixin class was moved to the collections module. The docs suggest using collections.MutableMapping in its place, however this abstract class does not provide a number of the methods that the DictMixin does/did.

Is there another (or better) way to define them short of grabbing a private copy of the UserDict.Mixin source for importing — or perhaps just copying the needed portions of it — into my own dictionary-like class?

Upvotes: 10

Views: 10789

Answers (1)

Lennart Regebro
Lennart Regebro

Reputation: 172407

The "number of methods" are specifically __len__ and __iter__ so the additional work is not that much.

def __len__(self):
    return len(self.mylist)

def __iter__(self):
    for i in self.mylist:
        yield i

Should work, I think (untested, though).

Upvotes: 5

Related Questions