python - Can't Access Global Variable in Mixin -


i cannot write global variable in following program. can please give me solution this? note var variable must in other file mod2.py , mod3.py

in mod1.py

var = 5 

in mod2.py

from mod1 import *  def foo(newvalue):   global var   print('foo: %d' % var)   var = newvalue  print('before: %d' % var) foo(2) print('after: %d' % var) 

in mod3.py

from mod2 import *  foo(3) print('var: %d' % var) 

the result when running mod3.py is

before: 5 foo: 5 after: 2 foo: 2 var: 2 

but expect be

before: 5 foo: 5 after: 2 foo: 2 var: 3 

i not want solution using import modx.py

it has fact importing variables not might think does:

from mod1 import var 

is same as

import mod1 var = mod1  # creates new variable 

whereas can't explain what's going in code, can changing imports be:

import mod1 

and referring var (without global now) as

mod1.var 

problem solved.

mod2.py:

import mod1  def foo(newvalue):   print('foo: %d' % mod1.var)   mod1.var = newvalue  print('before: %d' % mod1.var) foo(2) print('after: %d' % mod1.var) 

mod3.py:

import mod1 mod2 import *  foo(3) print('var: %d' % mod1.var) 

output:

before: 5 foo: 5 after: 2 foo: 2 var: 3 

please take time go through http://www.python.org/dev/peps/pep-0008/; few of things recommends:

* avoid wildcard imports (`from <module> import *`) various problems introduce * module names should `lowercase` 

furthermore, global variables not considered good, , there's way around them; see why global variables evil?.


Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -

php - Accessing static methods using newly created $obj or using class Name -