S
Stewart Midwinter
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,
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,