ob_refcnt INCREF and so on...
Courageous
jkraska1 at san.rr.com
Sat May 27 14:44:32 EDT 2000
import deque
class Class:
pass
o=Class()
deque.checkref(o)
-------
I'm currently working on a deque implementation, and I believe I now
understand python reference counts. However, one small little thing
puzzles me which I'd like resolved before I can say "I grok this."
In my efforts to grok references, I wrote a function to print the
ob_refcnt of python objects so I could test my understanding of
the reference system.
Here's where I'm a bit sketchy:
In the above code fragment, checkref(o) prints "2". The object "o"
has two references to it, and I'm not sure why. The closest thing
I have to a theory is that at the point of creating the argument,
"o" is assigned to a temporary tuple which grabs a reference count
to "o" (I based this theory on the knowledge that I have to parse
a tuple in the C extension code).
Can someone confirm or deny this, and if I'm mistaken, explain why
the refcnt of the object is 2 at the point where I print it??????
If correct, is there a predictable time when the temporary will
lose it's reference hold on the object?
Thanks much,
C/
More information about the Python-list
mailing list