Philippe C. Martin wrote:
If I do this:



print 'LEN OF BOOK BEFORE APPEND: ', len(pickle.dumps(self.__m_rw))
self.__m_rw.books.append( [p_col1,p_col2,p_col3] )
print 'LEN OF BOOK AFTER APPEND: ', len(pickle.dumps(self.__m_rw))

I get the same length before and after append.

when I print self.__m_rw.books, I see my 'appends' in there, yet the
pickled object does not change.

How is __m_rw.books defined? If it is a class attribute of the class of __m_rw you will see this behavior. e.g.


 >>> class Mrw:
 ...   books = []
 ...
 >>> m=Mrw()
 >>> class Mrw:
 ...   books = []
 ...
 >>> __m_rw = Mrw()
 >>> __m_rw.books.append(1)
 >>> __m_rw.books
[1]

but __m_rw.books will not be pickled with __m_rw because it belongs to the 
class, not the instance.

The fix is to declare books as an instance attribute:

class Mrw:
  def __init__(self):
    self.books = []

Kent


Any clue ?

Thanks


Philippe



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to