[Twisted-Python] Re: can pb.Copyable objects be compared for equality after a round trip?

Robert Gravina robert at gravina.com
Mon Jun 26 15:18:03 EDT 2006


Thanks Mike and others.. I just figured out how I can get this to  
work (with a bit of help from the ZODB mailing list too)! I am using  
the ZODB, and up until now I though that the _p_oid (the attribute  
that stores a unique object ID) was None all the time, even after I  
had persisted an object. I tried loading up a persisted object  
iteractively and found:

 >>> p._p_oid
'\x00\x00\x00\x00\x00\x00\x00\x08'
 >>> print p._p_oid
 >>> p._p_oid is None
False

... that it prints out as nothing, but it really is something (hence  
missing it in all my debug printouts)! (Those nutcase Zope  
developers!)... anyhow, it now appears I can compare the _p_oid of a  
Copyable coming back and find the object that represents it on the  
server, update it accordingly, commit the transaction and do a  
victory dance.

Thanks all for you help.

I thought I'd post this so anyone else using Twisted and ZODB won't  
spend days on this like I did.

Robert



On 2006/06/27, at 3:55, Mike Pelletier wrote:

> On Monday 26 June 2006 13:55, Robert Gravina wrote:
>> By the way, what is an id() comparison? As far as I know
>> Python compares to see if the instances (i.e. memory locations) are
>> equal.
>
> You got your chocolate in my peanutbutter!
>
> An "id()" comparison would be, "id(this) == id(that)".  In most (all?)
> implementations, 'id()' returns the memory location, but this is an
> implementation detail that is not guaranteed and shouldn't be  
> depended on.
> An object's python id is to be treated as an opaque identifier.
>
> Mike.





More information about the Twisted-Python mailing list