Can a method in one class change an object in another class?
Lee Harr
lee at example.com
Sun Mar 6 08:05:08 EST 2005
On 2005-03-06, Stewart Midwinter <stewart.midwinter at gmail.com> wrote:
> 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.
>
Depends a bit on who is updating who and which is
created first and which needs references to which.
Maybe like this...
> ---
> #objtest.py
>
class first:
def __init__(self, a):
self.a = a
print 'a initialized to', self.a
self.updater = second(self)
def update(self, a='aa'):
print 'initially, a is', self.a
self.updater.do_update(a)
print 'afterwards, a is', self.a
class second:
def __init__(self, lst):
self.lst = lst
def do_update(self, a):
self.lst.a = a
if __name__ == '__main__':
lst = first('a')
lst.update()
# or ...
dlg = second(lst)
lst.update('aaa')
More information about the Python-list
mailing list