"max(01)*" <[EMAIL PROTECTED]> writes: > hi. > > if i have a single program file, different class instances can share > information in (at least) two fashions: > > 1. using instance variables: > > class AClass: > def __init__(self): > self.att_1 = 42 > self.att_2 = "Hello!" > > class AnotherClass: > def __init__(self): > self.att_1 = anInstanceOfAClass.att_1 > > anInstanceOfAClass = AClass() > anInstanceOfAnotherClass = AnotherClass() > print anInstanceOfAnotherClass.att_1 ### This should print out 42 > > 2. using globals: > > class AClass: > def __init__(self): > self.att_1 = 42 > self.att_2 = "Hello!" > > class AnotherClass: > pass > > aGlobalString = "No way." > anInstanceOfAClass = AClass() > anInstanceOfAClass.att2 = aGlobalString > anInstanceOfAnotherClass = AnotherClass() > anInstanceOfAnotherClass.att_1 = aGlobalString > print anInstanceOfAClass.att2 ### This should output "No way." > print anInstanceOfAnotherClass.att_1 ### And this too
Both these methods actually use globals. In ther first case, the global is "anInstanceOfAClass", that is bound to self.att_1 in the __init__ method of AnotherClass. The solution is to pass the instance in as a parameter: class AClass: def __init__(self): self.att_1 = 42 self.att_2 = "Hello!" class AnotherClass: def __init__(self, instance): sefl.att_1 = instance anInstanceOfAClass = AClass() anInstanceOfAnotherClass = AnotherClass(anInstanceOfAClass) or maybe just: anInstaceOfAnotherClass = AnotherClass(AClass()) <mike -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list