can a method access/set another's variables?

7stud bbxx789_05ss at yahoo.com
Sun Apr 1 23:24:43 EDT 2007


On Apr 1, 7: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

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




More information about the Python-list mailing list