How to get a unique id for bound methods?
Russell E. Owen
rowen at cesmail.net
Wed Aug 24 23:03:43 CEST 2005
In article <mailman.3448.1124861507.10512.python-list at python.org>,
"Fredrik Lundh" <fredrik at pythonware.com> wrote:
>Russell E. Owen wrote:
>> Having looked at it again, it is familiar. I copied it when I wrote my
>> own code. I avoided using at the time both because the initial
>> underscore suggested it was a private method and because it introduces
>> an extra function call.
>> _register has the same weakness that my code had when I used id(func) --
>> it uses the id of the function to generate the unique tk function name,
>> but it keeps no reference to that function.
>> Either Tkinter is clever about keeping a reference to each callable
>> around, or else it has the same bug I was seeing and it just doesn't
>> show up often enough to have been caught. I should take some time and
>> look into that.
>of course it keeps a reference to it; how else do you expect
>the Tcl command to find the right PyObjects?
Right. Of course.
I started out emulating the code for _register but over time made
various incremental changes. Eventually I messed up and started taking
the id of the wrong thing. I was able to fix that and all is well --
without having to use the mysterious hash function.
I also now keep a reference to the tk function name so I can properly
delete it when finished. That eliminates a small memory leak.
Thanks for all your help.
More information about the Python-list