visibility between modules

max(01)* max2 at fisso.casa
Sat Apr 9 17:30:34 EDT 2005


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

----

i admit i prefer the fisrt way to do it. i have tried to make it work 
even if the "main program" and each class definition reside in different 
files, but i could not make it work:

max2 at 172.17.1.201:/tmp$ cat AClass.py
class AClass:
   def __init__(self):
     self.att_1 = 42
     self.att_2 = "Hello!"
max2 at 172.17.1.201:/tmp$ cat AnotherClass.py
class AnotherClass:
   def __init__(self):
     self.att_1 = anInstanceOfAClass.att_1
max2 at 172.17.1.201:/tmp$ cat Main.py
from AClass import *
from AnotherClass import *
anInstanceOfAClass = AClass()
anInstanceOfAnotherClass = AnotherClass()
print anInstanceOfAnotherClass.att_1  ### This should print out 42
max2 at 172.17.1.201:/tmp$ python Main.py
Traceback (most recent call last):
   File "Main.py", line 4, in ?
     anInstanceOfAnotherClass = AnotherClass()
   File "/tmp/AnotherClass.py", line 3, in __init__
     self.att_1 = anInstanceOfAClass.att_1
NameError: global name 'anInstanceOfAClass' is not defined
max2 at 172.17.1.201:/tmp$

----

any suggestion?

bye max



More information about the Python-list mailing list