[Zope] Building dynamically class instances using external methods.

Hannes Grund grund@zblmath.FIZ-Karlsruhe.DE
Mon, 13 Nov 2000 16:02:54 +0100


Question:

I am running Zope2.2.2 under python1.5.2 on a linux machine.
The following situation:

I have an external Method 
which creates dynamically an instance from of a class depending on 
some input to a function contained in this method.
In short the code (of the external method)

class Classname:
  def function1
  def function2
  ..etc.

def createInstance(argument)
 x = Classname(argument) 
 return x

Where createinstance is the method that is invoked initially from zope.
Everything works fine, the method returns something like 
<?.Classname instance at  8546e70>
using "__allow_access_to_unprotected_subobjects__ = 1" 
in the class definition it is possible to access all methods of the class
within Zope.
Among others the class holds a method 'dump' who should 'pickle' the 
objects instance (using the python 'pickle' module), more precise 
should return a string represantion of itself.
This works fine when tested in a normal python session. 
(where the method returns contrary to above:
<__main__.Classname instance at .......>) 
Called from Zope this does not work. The pickle module raises an 
error: 
  ..........
  File /usr/lib/python1.5/pickle.py, line 818, in dump
  File /usr/lib/python1.5/pickle.py, line 97, in dump
  File /usr/lib/python1.5/pickle.py, line 198, in save
  File /usr/lib/python1.5/pickle.py, line 400, in save_inst
  Error type: Attribute error, Error Value: __module__

QUESTION: Is there any possibility to get these things work. ?
 (or is it really awkward stuff ???)

Maybe related questions:
 
QUESTION 2: What does the "?" mark in the generated objects string
representation means ? 
Is it neccessary to 'anchor' (sorry for my terminology) the object within some 
other object ? And:

QUESTION 3: The lifetime of an instance has should not to be longer than 
the current REQUEST is performed,  is there any possibility to
create the instance as an subobject of the current REQUEST ?? 

Any help and advice would be highly appreciated...

regards 

 Hannes.