Why are you storing stuff by id() in a dictionary in the first place? When would you want to look something up by it's id() when you wouldn't want just to have a reference (possible a weakref) to the object itself?
(I ask because it seems like doing what you are doing would be a big ol' error prone hassle and waste of your time compared to other more commonly used techniques in python, but I can't figure out exactly what problem that dictionary approach was originally conceived of as a solution for) On Mon, Jul 12, 2010 at 9:25 AM, 音本四 <[email protected]> wrote: > In my game that I'm working on, Senso (which is my first game in Pygame), > there is a main game class, Game, which handles things on the global level. > One thing it does is store each instance of game objects in dictionaries, > with the dictionary keys being each instance's memory address, grabbed with > id(). When an instance needs to be removed, part of the process involves > removing the dictionary reference of the instance, by calling "del > game.myclassdict[id(self)]" (replacing "myclassdict" with the actual name of > the correct dictionary). This seems to cause a problem: sometimes, this > action seems to reference a nonexistant key in the respective dictionary. > I've only experienced it with bullets. I've checked and double-checked the > code, and it doesn't seem that at any point I forget to add an instance to > the dictionary. > > This problem has been around in my game for quite a while, but only > recently I have been able to consistently replicate it, while I was just > messing around with my game. Attached is my game as it is now. To see the > error, run senso.py and choose game 4 when prompted. It should happen pretty > quickly (in less than a second). Sometimes it takes longer. > > Does anyone have any idea why this might happen? > > (Also, please let me know if I'm doing something stupid! I won't feel bad! > :) ) >
