On Apr 14, 1:23 am, norseman <norse...@hughes.net> wrote: > AJ Mayorga wrote: > > For something like this I generally create a superclass to hold > > configuration variables that will change overtime, doing that will save you > > from insanity. > > > Class configVar: > > > #set initial values > > Def __init__(self): > > Self.A = 5 > > Self.B = 10 > > Self.C = 20 > > > Class myMath(configVars): > > def __init__(self): > > pass > > > def SubAandB(self): > > return self.A - self.B > > > def AddCandB(self): > > return self.C + self.B > > > def MultiplyXbyA(self, x): > > return self.A * x > > > m = myMath() > > X = m.SubAandB() > > Y = m.AddCandB() > > Z = m.MultiplyXbyA(32) > > > Keeps your vars in a safer easier to handle, debug, and change kinda way > > Good luck > > > AJ > > > -----Original Message----- > > From: python-list-bounces+aj=xernova....@python.org > > [mailto:python-list-bounces+aj=xernova....@python.org] On Behalf Of David > > Stanek > > Sent: Monday, April 13, 2009 12:12 PM > > To: Ravi > > Cc: python-l...@python.org > > Subject: Re: Imports in python are static, any solution? > > > On Mon, Apr 13, 2009 at 11:59 AM, Ravi <ra.ravi....@gmail.com> wrote: > >> foo.py : > > >> i = 10 > > >> def fi(): > >> global i > >> i = 99 > > >> bar.py : > > >> import foo > >> from foo import i > > >> print i, foo.i > >> foo.fi() > >> print i, foo.i > > >> This is problematic. Well I want i to change with foo.fi() . > > > Why not only import foo and using foo.i? In fi() when you set i = 99 > > you are creating a new object called i in foo's namespace. > > =============================== > > Aj is right. In foo.py there are two definitions for 'i'. The initial > and the replacement initiated by fi(). While initially there is no 'i' > definition in bar itself. > > To test, use my changes to bar.py > > import foo > #from foo import i > > i= foo.i > print i, foo.i > x= foo.fi() > print i, x, foo.i > x= foo.i > print i, x, foo.i > > the output will be: > 10 10 > 10 None 99 > 10 99 99 > > output is same if you uncomment #from... and comment i=... > The '...import i' creates the "same" var as the i=... in the current run > If you comment out both the from and the i= then the print i will fail > because i has not been defined in current space. > foo.fi() returns None (nothing) per it's definition. > whereas the first foo.i returns the initial i value and the foo.i after > foo.fi() returns the 2nd value, foo's i reset to 99 by fi() inside foo. > > Clear as Mud??? > > Steve
Yes I find the difference. Thank you all. -- http://mail.python.org/mailman/listinfo/python-list