how to cast an instance id

Emile van Sebille emile at fenx.com
Tue Sep 17 09:34:33 EDT 2002


Eric Texier:
> It there a way to create a new reference of  an object
> from the string representation of its id?
> Thanks for any help.
>
> class foo:
>     def info(self):
>         print self
>
> a = foo()
> a.info()
> ccc = "newa = 0x%x" % id(a)
> exec(ccc)
>

There are ways of walking the object hierarchy checking ids, eg:

ccc = id(a)
for ii in locals().values():
    if id(ii) == ccc:
        ccc = ii
        break

Or, you can set things up specifically to support this if you know in
advance:

class foo(object):
    objlist = {}
    def __init__(self):
        foo.objlist[id(self)] = self
    def info(self):
        print self

a = foo()
ccc = id(a)
ccc = foo.objlist[ccc]
print ccc

That said,  there's probably a better way, ie, setting ccc to a instead
of the id of a in the first place.  Otherwise, you risk retaining ccc
when a could have been refcounted away.

--

Emile van Sebille
emile at fenx.com

---------







More information about the Python-list mailing list