can a method access/set another's variables?

wswilson wswilson at gmail.com
Sun Apr 1 21:56:05 EDT 2007


On Apr 1, 9:43 pm, Michael Hoffman <cam.ac... at mh391.invalid> 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

I am parsing a document which contains some lines with code I want to
eval or exec. However, due to the complexity of the parsing, I am
splitting it among different methods. So, if I eval something in one
method, it won't be there if I try to access its value a few lines
later since I happen to be in a different method in the parser. Thanks
for the help!




More information about the Python-list mailing list