On Apr 1, 9:24 pm, "7stud" <[EMAIL PROTECTED]> wrote: > On Apr 1, 7:43 pm, Michael Hoffman <[EMAIL PROTECTED]> wrote: > > > > > asdf1234234 wrote: > > > -a.py- > > > import b > > > > class A: > > > def __init__(self): > > > pass > > > def my_method(self): > > > var = 1 > > > self.var = 2 > > > b.set_var(self) > > > print var > > > print self.var > > > > my_a = A() > > > my_a.my_method() > > > > -b.py- > > > def set_var(self): > > > var = 2 > > > self.var = 2 > > > > I want both var and self.var to be 2 at the end. Is there anything I > > > can pass to set_var() that will give it access to the variables in > > > my_method() like I can use self for the variables in the class A? > > > I hope there isn't a way to do this that simply. :) Why do you want to > > do this, or is it idle curiosity? There is almost surely a better way to > > solve your underlying problem. > > > You can *read* your caller's local variables (either pass locals() as an > > argument or use inspect to get the frame locals), but writing to this > > dictionary has undefined behavior. > > -- > > Michael Hoffman > > class A(object): > def early_parse(self): > self.result1 = eval("10+5") > def later_parse(A_obj): > A_obj.result2 = eval("20*2") > > a = A() > a.early_parse() > later_parse(a) > print a.result1 > print a.result2
Oops. That def should be: def later_parse(A_obj): A_obj.result2 = A_obj.result1 + eval("20*2") -- http://mail.python.org/mailman/listinfo/python-list