Hello, I discovered this behaviour in dictionary which I find confusing. In SneakyLang, I've tried to extend dictionary so it visits another class after something is added:
class RegisterMap(dict): def __setitem__(self, k, v): dict.__setitem__(self, k,v) self[k].visit_register_map(self) However, when constructing dictionary with dictionary in constructor like d = RegisterMap({'k':'v'}), __setitem__ is not called, so workaround is needed: class RegisterMap(dict): def __init__(self, *args, **kwargs): dict.__init__(self, *args, **kwargs) for k in self: self.__after_add(k) def __after_add(self, k): self[k].visit_register_map(self) def __setitem__(self, k, v): dict.__setitem__(self, k,v) self.__after_add(k) What is the reason for this behavior? Am I doing something wrong and better approach is needed? Or should this be considered as minor bug in Python? (tried this only in 2.4 so far) Thank You, Almad -- http://mail.python.org/mailman/listinfo/python-list