[Pythonmac-SIG] (begginer) Pickling

François Granger fgranger@mail.dotcom.fr
Mon, 9 Apr 2001 00:03:55 +0200


(My news server does not works tonight...)

I send below a simplified version of the code I am writing. When I 
run it I get the following error message:
'Failed to import class B from module __main__'
I tired an alternative wich is commented out (line 44-51 , 61 and 65) 
but the error message is similar with a reference to class A.

I am guessing that this is an issue with namespace that I don't 
really understand.

On a similar track, I would be happy to see a more general algorithm 
to implement persistence of complexe objects between runs.

TIA


========================================================
# python
"""
Simple test of pickling complex objects

"""
import pickle

class A:
	"""
	"""
	id = 0
	def __init__(self):
		A.id += 1
		self.value = 0.0
		self.id = A.id

	def __repr__(self):
		return str(self.__dict__) + '\n\n'

	def activate(self):
		self.value += 1.0


class B:
	"""
	"""
	def __init__(self, 	ninput = 10, noutput = 10):
		self.ninput = ninput
		self.noutput = noutput
		self.input = {}
		for i in range(self.ninput):
			self.input[A.id] = A()
		self.output = {}
		for i in range(self.noutput):
			self.output[A.id] = A()

	def transmit(self):
		for i in self.input.keys():
			self.input[i].activate()

		for i in self.output.keys():
			self.output[i].activate()
	"""
	def save_NN(self, fp):
		pickle.dump((self.input, self.output), fp)
		pass

	def load_NN(self, fp):
		#set neuron.id to max id ?
		self.input, self.layer, self.output = pickle.load(fp)
		pass
	"""

if __name__ == '__main__':
	inp = 10
	out = 10
	N = B(inp, out)
	for i in range(5):
		N.transmit()
	fp = open('neuronet.txt', 'w')
	#N.save_NN(fp)
	pickle.dump(N, fp)
	fp.close()
	fp = open('neuronet.txt', 'r')
	#N.load_NN(fp)
	N = pickle.load(fp)
	fp.close()
	pass

========================================================

-- 
[fr, en, es, ia]
Information sur la hiérarchie usenet europa.* :
http://europa.usenet.eu.org
-- 
"Faites des phrases courtes. Un sujet, un verbe, un complément. Quand 
vous voudrez ajouter un adjectif, vous viendrez me voir." - Georges 
Clemenceau, 1841-1929, médecin et homme politique français. Consignes 
aux journalistes de "L'Aurore". d'après 
<http://www.sit.ulaval.ca/pagespersonnelles/phf/pensee.html>