[ZODB-Dev] Re: getting the object ID (_p_oid attribute)

Robert Gravina robert at gravina.com
Mon Jun 26 15:11:34 EDT 2006


On 2006/06/27, at 3:49, Benji York wrote:

> Robert Gravina wrote:
>> I just tried loading a persisted  object interactively and noticed  
>> that although the _p_oid doesn't  print out as anything (and hence  
>> I always thought it was empty in my  debugging prints), it isn't  
>> actually None! Can anyone explain this?  (here "p" is my persisted  
>> object)
>>  >>> p._p_oid
>> '\x00\x00\x00\x00\x00\x00\x00\x08'
>>  >>> print p._p_oid
>>  >>> p._p_oid is None
>> False
>
> What would you expect to see if you printed out seven null  
> characters and a backspace?

Hahaha - that's a good point! I was expecting IDs to look, well,  
something like "asdf23asdf". Well, anyway thankyou! I seemed to have  
solved this problem. I was able to write a __eq__ function like this:

     def __eq__(self, other):
         if isinstance(other, <name of my class>):
             if hasattr(other,"_p_oid") and other._p_oid != None and  
(other._p_oid == self._p_oid):
                 return True
             else:
                 return False

and now can compare objects for equality after the (Twisted) client  
edits them and sends them back.

Anyway, thanks again.

Robert





More information about the ZODB-Dev mailing list