You should probably call dict.__init__(self)
when subclassing; in fact, you don’t know what’s happening precisely in dict (since it’s a builtin), and that might vary across versions and implementations. Not calling it may result in improper behaviour, since you can’t know where dict is holding its internal data structures.
By the way, you didn’t tell us what you want to do; if you want a class with dict (mapping) behaviour, and you don’t really need a dict (e.g. there’s no code doing isinstance(x, dict)
anywhere in your software, as it should be), you’re probably better off at using UserDict.UserDict
or UserDict.DictMixin
if you’re on python <= 2.5, or collections.MutableMapping
if you’re on python >= 2.6 . Those will provide your class with an excellent dict behaviour.
EDIT: I read in another comment that you’re not overriding any of dict’s method! Then there’s no point in subclassing at all, don’t do it.
def createImageDb(directory):
d = {}
# do something to fill in the dict
return d
EDIT 2: you want to inherit from dict to add new methods, but you don’t need to override any. Than a good choice might be:
class MyContainer(dict):
def newmethod1(self, args):
pass
def newmethod2(self, args2):
pass
def createImageDb(directory):
d = MyContainer()
# fill the container
return d
By the way: what methods are you adding? Are you sure you’re creating a good abstraction? Maybe you’d better use a class which defines the methods you need and use a “normal” dict internally to it.
Factory func:
http://en.wikipedia.org/wiki/Factory_method_pattern
It’s simply a way of delegating the construction of an instance to a function instead of overriding/changing its constructors.