[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 )