Am Sat, 06 Apr 2013 02:37:31 +0000 schrieb Steven D'Aprano: >>> [...] >> def __init__(self): >> self.events = {} >> self.components = [] >> self.contents = [] >> self.uid = uuid4().int >> self.events['OnLook'] = teventlet() >> >> >> Basically events don't get initialized like I'd like after I depickle >> objects. > > > Correct, by default pickle does not call the __init__ method, it just > reconstructs the instance. Basically, it takes a snapshot of the > instance's internal state (the __dict__) and reconstructs from the > snapshot. > > [...] > To the OP: Did you really mean self.events['OnLook'] = teventlet() as opposed to: self.events['OnLook'] = teventlet
The first one executes teventlet and then assigns the result of the function to self.events['OnLook']. The second one assigns the function teventlet to the dict entry (presumably so that it will be called when the objct detects the 'OnLook' event). Unless the teventlet() function returns itself a function, an 'OnLook' event won't do anything useful during the remaining life time of the object, I think. Regards Martin -- http://mail.python.org/mailman/listinfo/python-list