M
max(01)*
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:
[email protected]:/tmp$ cat AClass.py
class AClass:
def __init__(self):
self.att_1 = 42
self.att_2 = "Hello!"
[email protected]:/tmp$ cat AnotherClass.py
class AnotherClass:
def __init__(self):
self.att_1 = anInstanceOfAClass.att_1
[email protected]:/tmp$ cat Main.py
from AClass import *
from AnotherClass import *
anInstanceOfAClass = AClass()
anInstanceOfAnotherClass = AnotherClass()
print anInstanceOfAnotherClass.att_1 ### This should print out 42
[email protected]:/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
[email protected]:/tmp$
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:
[email protected]:/tmp$ cat AClass.py
class AClass:
def __init__(self):
self.att_1 = 42
self.att_2 = "Hello!"
[email protected]:/tmp$ cat AnotherClass.py
class AnotherClass:
def __init__(self):
self.att_1 = anInstanceOfAClass.att_1
[email protected]:/tmp$ cat Main.py
from AClass import *
from AnotherClass import *
anInstanceOfAClass = AClass()
anInstanceOfAnotherClass = AnotherClass()
print anInstanceOfAnotherClass.att_1 ### This should print out 42
[email protected]:/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
[email protected]:/tmp$