[Zope] Python Classes and Zope.

Jean-Marc Orliaguet jmo at chalmers.se
Thu Dec 1 15:04:11 EST 2005


Dario Lopez-Kästen wrote:

> Andreas Jung wrote:
>
>>
>>
>> --On 1. Dezember 2005 13:46:55 -0200 Fernando Lujan 
>> <fernando.lujan at terra.com.br> wrote:
>>
>>> There's a way to use a Python class inside zope?
>>>
>>> For instance, if I create the class:
>>>
>>> class MyClass:
>>>      "A simple example class"
>>>      i = 12345
>>>      def f(self):
>>>          return 'hello world'
>>>
>>> Can I invoke the following code inside a Python Script?
>>>
>>> x = MyClass()
>>> x.f()
>>>
>>
>> PythonScripts are for *scripting* not for implementing complex
>> logic and for programming tasks that require classes. PythonScripts 
>> don't provide full Python functionality that why were are talking of 
>> *Restriced Python*. Consider writing your functionality as Python 
>> product.
>
>
> all moral lessons aside, there are several use cases where access to 
> *objects*, passed to zope2 from external packages and modules, is 
> desirable.
>
> Most, if not all examples, out there assume that the external 
> packages/modules/classes can freely be converted to Zope-classes.
>
> Now, assuming that I have not missed something fundamental, the 
> problem the way I see it, is that when my Product recieves an object 
> from the non-zope code, the object does not know anything about Zope, 
> it is just a happy Python-object.
>
> But in order to even display it in a zpt I must transmogrify it into a 
> special zope-object, and *that* is not so easy as I have discovered.
>
> In my case I am not so interested in importing the moduels or classes 
> into a Script(Python) - I have allready passed the objects in question 
> thtough my product, but still I get some "Zope Does Not Allow That" 
> error.
>
> So far I have not had any success with anything else than writing 
> special methods in my Classes that converts the objects to 
> dictionaries before passing them to the zpt or Script(Python) in 
> question.
>
> But that feels like a very awkward way of doing things, and it makeas 
> it *very* difficult for Zope to be a nice player with non-zope objects.
>
> My 2 €-cents worth.
>
> /dario
>
>
You need to call InitializeClass on your object, and that's it.

cf http://www.upfrontsystems.co.za/courses/zope/ch04.html

under "Zopifying our Python classes"

/JM


More information about the Zope mailing list