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

Reply via email to