At 11:39 AM 4/9/2001 +0200, Martijn Pieters wrote: <<SNIP>>
A python Script is a function in itself, so it's namespace isn't the global module space you are expecting. Normally, you would indeed expect function() and add2() to be visible throughout your script, as they have been defined at the module level. <<SNIP>> -- Martijn Pieters | Software Engineer mailto:mj@digicool.com | Digital Creations http://www.digicool.com/ | Creators of Zope http://www.zope.org/ ---------------------------------------------
Thank you sir, this was a trully helpful clue. This explains a lot of my mental difficulties. Here's another question along the same lines -- directed to anyone (like, I understand if you're busy). Even in an earlier Python like 1.5.2 I believe it's legal to write a function like this: ========== def f(): class test: def d(self,n): return n+100 def c(self,n): n = n + self.d(n) return n+10 om = test() j = om.c(3) return j ========== There's a class defined internally to the function. The above works for me in regular Python (2.1 beta -- but I'm not depending on nested scopes, no importing from __future___, and no warnings for not). However, if I strip off the top line and make the rest be a "function body" ala a Zope script (de-indent the rest of the lines), like this: ========== class test: def d(self,n): return n+100 def c(self,n): n = n + self.d(n) return n+10 om = test() j = om.c(3) return j ========== ...then when I try to save it I get: Forbidden operation STORE_NAME at line 4 Forbidden operation STORE_NAME at line 7 So is there something about Python classes that they can't be defined internally to an ordinary function/script? I've been seeing a lot of text about "publishing a product" which involves doing some bookkeeping stuff I was hoping to avoid. The on-line docs seem to go from "Hello world" type scripts (and vaccinating a hippo) to publishing products, without a whole lot in between (and so my train of thought keeps falling through the cracks). Kirby