[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