dmitrey wrote: > hi all, > suppose I have defined a child class of Python dict, currently it > constructor looks like that: > def __init__(self, *args, **kwargs): > dict.__init__(self, *args, **kwargs) > #(+some more insufficient code) > > Constructor should be capable of calling with either any way Python > dict is constructed or with a Python dict instance to be derived from; > calculations speed is important. > > So it works well for now, but I want __init__ to set modified values, > like this: > values_of_the_dict = [some_func(elem) for elem in self.values()] > > How this could be done?
>>> class D(dict): ... def __init__(self, *args, **kw): ... if args: ... args = ((k, v.upper()) for k, v in args[0]), ... if kw: ... for k in kw: kw[k] = 10*kw[k] ... dict.__init__(self, *args, **kw) ... >>> D(["ab", "cd"], e="f") {'a': 'B', 'c': 'D', 'e': 'ffffffffff'} Replace v.upper() and 10*kw[k] with the appropriate some_func() calls. Personally I would apply the function before passing the data to the dict subclass. Peter -- http://mail.python.org/mailman/listinfo/python-list