Re: [Zope-dev] "Problem" using External Method
On Wed, 24 Jan 2001, Espen Sorbye Frederiksen wrote: > I did what you suggested, but I am still a bit stuck. Maybe I call them > wrong in my code. I use the call below but get an error. > > > > > Error Type: AttributeError > Error Value: data > > any suggestions what I do wrong, I suggest you run Zope in "-D" mode so you can see tracebacks easily. They can pinpoint the exact source of problems like this. Shane ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] "Problem" using External Method
> Take out all the "import __main__" statements and you should be fine. > > Python lets you access two namespaces at once: the "local" namespace and > the "global" namespace. Were it not for the global namespace, you would > need to do something like "import __main__". But since globals are > there, everything available at the module level is also available at the > function level. > > Shane I did what you suggested, but I am still a bit stuck. Maybe I call them wrong in my code. I use the call below but get an error. Error Type: AttributeError Error Value: data any suggestions what I do wrong, Espen > > > class Testclass: > > def setdata(self,val1,val2,val3): > > self.data = [val1,val2,val3] > > def updatedata(self, index): > > self.data[index] = self.data[index]+1 > > def display(self): > > return self.data > > > > x = Testclass() > > > > def createdata(var1, var2, var3): > > x.setdata(var1, var2, var3) > > > > def update(index): > > x.updatedata(index) > > > > def returndata(): > > return x.display() > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) > > ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] "Problem" using External Method
"Espen S. Frederiksen" wrote: > > The problem occur when I try to split up the function as > shown below. I would like to store the data list, update it > if nessesary and return it when appropriate. Am I making it > unessesary complex when I use the class? Is there maybe a > way to declare the data list global within the module? Or > is there another, possibly different, way to do this? Take out all the "import __main__" statements and you should be fine. Python lets you access two namespaces at once: the "local" namespace and the "global" namespace. Were it not for the global namespace, you would need to do something like "import __main__". But since globals are there, everything available at the module level is also available at the function level. Shane > class Testclass: > def setdata(self,val1,val2,val3): > self.data = [val1,val2,val3] > def updatedata(self, index): > self.data[index] = self.data[index]+1 > def display(self): > return self.data > > x = Testclass() > > def createdata(var1, var2, var3): > import __main__ > x.setdata(var1, var2, var3) > > def update(index): > import __main__ > x.updatedata(index) > > def returndata(): > import __main__ > return x.display() ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] "Problem" using External Method
The problem occur when I try to split up the function as shown below. I would like to store the data list, update it if nessesary and return it when appropriate. Am I making it unessesary complex when I use the class? Is there maybe a way to declare the data list global within the module? Or is there another, possibly different, way to do this? class Testclass: def setdata(self,val1,val2,val3): self.data = [val1,val2,val3] def updatedata(self, index): self.data[index] = self.data[index]+1 def display(self): return self.data x = Testclass() def createdata(var1, var2, var3): import __main__ x.setdata(var1, var2, var3) def update(index): import __main__ x.updatedata(index) def returndata(): import __main__ return x.display() Thank you for your assistance so far. Hope you have time to answer my problem, Espen On Tue, 23 Jan 2001 18:46:21 -0500 Chris McDonough <[EMAIL PROTECTED]> wrote: > Espen, > > The files that external methods actually live in are not Python modules, > like normal Python modules. Though I haven't tried your example, it's > likely that your reference to __main__ is confusing the external method > machinery. Additionally, the output of "print" doesn't go to the remote > browser, it instead goes to the console. You need to return a value to the > caller for it to be displayed on the remote browser. > > Try instead (as an example): > > class Testclass: > def setdata(self,val1,val2,val3): > self.data = [val1,val2,val3] > def updatedata(self, index): > self.data[index] = self.data[index]+1 > def display(self): > print self.data > > def createdata(): > x = Testclass() > x.setdata(10, 20, 30) > x.updatedata(2) > return x.display() > > - Original Message - > From: "Espen Sorbye Frederiksen" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Tuesday, January 23, 2001 5:52 PM > Subject: [Zope-dev] "Problem" using External Method > > > > The module below works using the python compiler > > class Testclass: > > def setdata(self,val1,val2,val3): > > self.data = [val1,val2,val3] > > def updatedata(self, index): > > self.data[index] = self.data[index]+1 > > def display(self): > > print self.data > > > > x = Testclass() > > def createdata(): > > import __main__ > > __main__.x.setdata(10, 20, 30) > > __main__.x.updateLog(2) > > __main__.x.display() > > > > >>>createdata() > > >>>[10,20,31] > > > > However if I try to add it as an External Method( id= createdata) it > > doesn't > > seem to work. I've tried to call it using > > without success. Any suggestions what I do wrong. > > I am grateful for all comments, > > > > Espen > > > > > > ___ > > Zope-Dev maillist - [EMAIL PROTECTED] > > http://lists.zope.org/mailman/listinfo/zope-dev > > ** No cross posts or HTML encoding! ** > > (Related lists - > > http://lists.zope.org/mailman/listinfo/zope-announce > > http://lists.zope.org/mailman/listinfo/zope ) > > > > > > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) > -- Espen S. Frederiksen Vocalist Manifold Kapellmester Gambrinus Heriot-Watt University [EMAIL PROTECTED] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] "Problem" using External Method
Ooops, replace "print self.data" with "return self.data" in the display method of my Testclass. - Original Message - From: "Chris McDonough" <[EMAIL PROTECTED]> To: "Espen Sorbye Frederiksen" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Tuesday, January 23, 2001 6:46 PM Subject: Re: [Zope-dev] "Problem" using External Method > Espen, > > The files that external methods actually live in are not Python modules, > like normal Python modules. Though I haven't tried your example, it's > likely that your reference to __main__ is confusing the external method > machinery. Additionally, the output of "print" doesn't go to the remote > browser, it instead goes to the console. You need to return a value to the > caller for it to be displayed on the remote browser. > > Try instead (as an example): > > class Testclass: > def setdata(self,val1,val2,val3): > self.data = [val1,val2,val3] > def updatedata(self, index): > self.data[index] = self.data[index]+1 > def display(self): > print self.data > > def createdata(): > x = Testclass() > x.setdata(10, 20, 30) > x.updatedata(2) > return x.display() > > - Original Message - > From: "Espen Sorbye Frederiksen" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Tuesday, January 23, 2001 5:52 PM > Subject: [Zope-dev] "Problem" using External Method > > > > The module below works using the python compiler > > class Testclass: > > def setdata(self,val1,val2,val3): > > self.data = [val1,val2,val3] > > def updatedata(self, index): > > self.data[index] = self.data[index]+1 > > def display(self): > > print self.data > > > > x = Testclass() > > def createdata(): > > import __main__ > > __main__.x.setdata(10, 20, 30) > > __main__.x.updateLog(2) > > __main__.x.display() > > > > >>>createdata() > > >>>[10,20,31] > > > > However if I try to add it as an External Method( id= createdata) it > > doesn't > > seem to work. I've tried to call it using > > without success. Any suggestions what I do wrong. > > I am grateful for all comments, > > > > Espen > > > > > > ___ > > Zope-Dev maillist - [EMAIL PROTECTED] > > http://lists.zope.org/mailman/listinfo/zope-dev > > ** No cross posts or HTML encoding! ** > > (Related lists - > > http://lists.zope.org/mailman/listinfo/zope-announce > > http://lists.zope.org/mailman/listinfo/zope ) > > > > > > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) > > ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] "Problem" using External Method
Espen, The files that external methods actually live in are not Python modules, like normal Python modules. Though I haven't tried your example, it's likely that your reference to __main__ is confusing the external method machinery. Additionally, the output of "print" doesn't go to the remote browser, it instead goes to the console. You need to return a value to the caller for it to be displayed on the remote browser. Try instead (as an example): class Testclass: def setdata(self,val1,val2,val3): self.data = [val1,val2,val3] def updatedata(self, index): self.data[index] = self.data[index]+1 def display(self): print self.data def createdata(): x = Testclass() x.setdata(10, 20, 30) x.updatedata(2) return x.display() - Original Message - From: "Espen Sorbye Frederiksen" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, January 23, 2001 5:52 PM Subject: [Zope-dev] "Problem" using External Method > The module below works using the python compiler > class Testclass: > def setdata(self,val1,val2,val3): > self.data = [val1,val2,val3] > def updatedata(self, index): > self.data[index] = self.data[index]+1 > def display(self): > print self.data > > x = Testclass() > def createdata(): > import __main__ > __main__.x.setdata(10, 20, 30) > __main__.x.updateLog(2) > __main__.x.display() > > >>>createdata() > >>>[10,20,31] > > However if I try to add it as an External Method( id= createdata) it > doesn't > seem to work. I've tried to call it using > without success. Any suggestions what I do wrong. > I am grateful for all comments, > > Espen > > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) > > ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )