Can a method in one class change an object in another class?

Stewart Midwinter stewart.midwinter at gmail.com
Sun Mar 6 01:26:30 EST 2005


I've got an app that creates an object in its main class (it also
creates a GUI).  My problem is that I need to pass this object, a
list, to a dialog that is implemented as a second class. I want to
edit the contents of that list and then pass back the results to the
first class.   So my question is, can a method in one class change an
object in another class?

If the answer is no, I suppose I could pass in the list as an argument
when I create the second class, then return the contents of the list
when I end the methods in that second class.

alternatively, I could make the list a global variable, then it would
be available to all classes.  I have a nagging feeling though that
global variables are to be avoided on general principle. Is this
correct?

Here's a simple example app that tries to have one class change the
object in another class.  It doesn't give the behaviour I want,
though.

---
#objtest.py

class first:
    def __init__(self):
        a = 'a'
        self.a = a
        print self.a

    def update(self):
        print 'initially, a is', self.a
        self.a = second(self.a)
        print 'afterwards, a is', self.a

class second:
    def __init__(self, a):
        pass

    def __call__(self, a):
        a = 'aa'
        return a

if __name__ == '__main__':
    app = first()
    app.update()

thanks,
--
Stewart Midwinter
stewart at midwinter.ca
stewart.midwinter at gmail.com



More information about the Python-list mailing list