On Tue, Jul 10, 2012 at 12:11 PM, Chris Hare <ch...@labr.net> wrote: > > I know they are bad. That is why I would prefer not to use it, but I am not > sure how else to handle this problem. > > In this app, the user must log in. Once authenticated, they have a userid > stored in the SQLite database. Before splitting my app into multiple files, > I used a global variable. I know its bad, but it worked. Now that things > are split apart, the classes which used it previously now don't see it > anymore, even using the global keyword. I think this is the expected > behavior. See here > > file: a.py > > import b > global_var = "global" > > def func1(): > global global_var > print "global var in func1 = %s" % global_var > > class intclass: > def func2(self): > global global_var > print "global var in intclass = %s" % global_var > > print "global_var = %s" % global_var > func1() > f = intclass() > f.func2() > g = b.extclass() > g.func3() > > file: b.py > > class extclass: > def func3(self): > global global_var > print "global var in extclass = %s" % global_var > > When I run it, I get what I think the expected behavior, that the external > class ext class won't be able to see the global_var > > Big-Mac:t chare$ python a.py > global_var = global > global var in func1 = global > global var in intclass = global > Traceback (most recent call last): > File "a.py", line 18, in <module> > g.func3() > File "/Users/chare/Development/python/animaltrax/pkg/t/b.py", line 5, in > func3 > print "global var in extclass = %s" % global_var > NameError: global name 'global_var' is not defined > > So - my question is this: how do I solve the problem of multiple classes > needing to get access to a value which needs to be preserved across the > lifetime of the running application? > > One thought was a RAM based SQLite database, but that seems like a lot of > work. I dunno, maybe that is the option. > > suggestions, ideas, criticisms are all welcome. Python code aside, I just > don't know how to approach this problem in Python. > > Thanks, as always for the feedback and guidance. > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor
Can you tell us a little more about what this app does? As a general rule, if you're using a global variable it's a strong sign that you're doing something wrong. Can we see real code? To answer your most basic question: import a a.global_var But again, that's probably not the right way to solve your problem. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor