getting global variables from dictionary

George Sakkis george.sakkis at gmail.com
Fri Sep 26 22:29:43 EDT 2008


On Sep 26, 10:01 pm, icarus <rsa... at gmail.com> wrote:
> global_vars.py has the global variables
> set_var.py changes one of the values on the global variables (don't
> close it or terminate)
> get_var.py retrieves the recently value changed (triggered right after
> set_var.py above)
>
> Problem: get_var.py retrieves the old value, the built-in one but not
> the recently changed value in set_var.py.
>
> What am I doing wrong?
>
> ----global_vars.py---
> #!/usr/bin/python
>
> class Variables :
>         def __init__(self) :
>                 self.var_dict = {"username": "original username"}
>
> ---set_var.py ---
> #!/usr/bin/python
>
> import time
> import global_vars
>
> global_vars.Variables().var_dict["username"] = "new username"
> time.sleep(10)   #give enough time to trigger get_var.py
>
> ---get_var.py ---
> #!/usr/bin/python
> import global_vars
> print global_vars.Variables().var_dict.get("username")

First off, you don't import the set_var module anywhere; how do you
expect the value to change? Second, every time you do
"global_vars.Variables()" you create a brand new Variables() instance,
initialized with the original var_dict. The Variables() instance you
create at set_var.py is discarded in the very next line. Third, I have
no idea why you put the "time.sleep(10)" there.

By the way, Python is not Java; you don't have to make classes for
everything. A working version of your example would be:

----global_vars.py---

var_dict = {"username": "original username"}

---set_var.py ---
import global_vars
global_vars.var_dict["username"] = "new username"

---get_var.py ---
import global_vars
import set_var
print global_vars.var_dict.get("username")

$ python get_var.py
new username


HTH,
George



More information about the Python-list mailing list