[Zope] Verrryy strange behavior (NameError)
   
    Andrew Athan
     
    aathan-zope-list%REMOVEME@memeplex.com
       
    Fri, 6 Apr 2001 17:29:39 -0400
    
    
  
Randy:
Thanks for the note!
Your explanation is one I understand clearly and one that occured to me
early on.  However here's what deeply confused me about what was/is going on
and why I was not sure about the relationship to global vs local variables:
(1) Access to the value of the global variable worked just fine, without
declaration of the "global" keyword.
(2) Access to the value of the global variable stopped working when a line
of code setting a local variable was inserted many lines BELOW where it is
accessed, and inside a block that never executes.
(3) Access to the value of the global variable seemed to be dependent on the
type of the data it stored.
A.
-----Original Message-----
From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of
Randall F. Kern
Sent: Friday, April 06, 2001 4:10 PM
To: Andrew Athan; zope@zope.org
Subject: RE: [Zope] Verrryy strange behavior (NameError)
This is just normal python.  When you want to assign to a global
variable inside a function, you have to declare the variable as a
global:
_stateVariable = 0
class
    def func()
>>>     global _stateVariable
        _stateVariable = 1
-Randy
-----Original Message-----
From: Andrew Athan [mailto:aathan-zope-list%REMOVEME@memeplex.com]
Sent: Friday, April 06, 2001 1:01 PM
To: zope@zope.org
Subject: RE: [Zope] Verrryy strange behavior (NameError)
I'm sending this in case my sagga helps some other relative newcomer.
I suspect this problem has something to do with python1.5.2's (or Zope's
hackery of...) handling of namespaces within modules & classes.  What I
needed was access to a "static global" variable to store some state for
me.  (No, I haven't looked into threads, their existance, or such issues
in Zope).  What I was doing was:
_stateVariable=0
....
class ....
def fun()
   ....
   _stateVariable=1
and this was causing me all kinds of grief.  By changing the code to
_stateVariable = {'a':0}
...
class ...
def fun()
   ...
   _stateVariable['a']=1
everything works just fine.  Now, can someone give me the shortcut to
understand WHHHYYY?
A.
_______________________________________________
Zope maillist  -  Zope@zope.org
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )