Я искал источник класса UserDict
, и я немного обеспокоен, увидев:
class UserDict:
def __init__(self, dict=None, **kwargs):
self.data = {}
if dict is not None:
self.update(dict)
...
, а затем такие методы, как:
def keys(self): return self.data.keys()
def items(self): return self.data.items()
def iteritems(self): return self.data.iteritems()
def iterkeys(self): return self.data.iterkeys()
def itervalues(self): return self.data.itervalues()
def values(self): return self.data.values()
Не было бы лучше сделать:
class UserDict(dict):
def __init__(self, dict=None, **kwargs):
#self.data = {} # now self itself is {}
if dict is not None:
self.update(dict)
...
и тогда необходимость в вышеупомянутых методах просто исчезнет.
Кроме того, это также помогает программисту с самого начала понять, что UserDict
расширяет функциональность dict, просматривая само определение класса.