[Python-Dev] ctypes: is it intentional that id() is the only way to get the address of an object?

MRAB python at mrabarnett.plus.com
Fri Jan 18 18:39:54 EST 2019


On 2019-01-18 23:02, Greg Ewing wrote:
> MRAB wrote:
>    If I want to cache some objects, I put them in a dict, using the id as
>> the key. If I wanted to locate an object in a cache and didn't have 
>> id(), I'd have to do a linear search for it.
> 
> That sounds dangerous. An id() is only valid as long as the object
> it came from still exists, after which it can get re-used for a different
> object. So when an object is flushed from your cache, you would have
> to chase down all the places its id is being stored and eliminate them.
> 
> Are you sure you couldn't achieve the same thing more safely using
> weak references?
> 
I'm not storing the id anywhere else.

I could've used a list for the cache, but then when I wanted to remove 
an object I'd have to search for it, O(n). Using a dict makes it O(1).


More information about the Python-Dev mailing list