J
Jens Thoms Toerring
Hi,
I hope that this isn't a stupid question, asked already a
hundred times, but I haven't found anything definitive on
the problem I got bitten by. I have two Python files like
this:
-------- S1.py ------
import random
import S2
class R( object ) :
r = random.random( )
if __name__ == "__main__" :
print R.r
S2.p( )
-------- S2.py ------
import S1
def p( ) :
print S1.R.r
and my expectation was that the static variable 'r' of class
R would be identical when accessed from S1.py and S2.py.
Unfortunately, that isn't the case, the output is different
(and R seems to get instantiated twice).
But when I define R in S2.py instead
-------- S1.py ------
import S2
print S2.R.r
S2.p( )
-------- S2.py ------
import random
class R( object ) :
r = random.random( )
def p( ) :
print R.r
or, alternatively, if I put the defintion of class R into
a third file which I then import from the other 2 files,
things suddenly start to work as expected/ Can someone
explain what's going one here? I found this a bit sur-
prising.
This is, of course, not my "real" code - it would be much
more sensible to pass the number to the function in the
second file as an argument - but is the smallest possinle
program I could come up with that demonstrate the prob-
lem. In my "real" code it's unfortunately not possible
to pass that number to whatever is going to use it in the
other file, I have to simulate a kind of global variable
shared between different files.
Best regards, Jens
I hope that this isn't a stupid question, asked already a
hundred times, but I haven't found anything definitive on
the problem I got bitten by. I have two Python files like
this:
-------- S1.py ------
import random
import S2
class R( object ) :
r = random.random( )
if __name__ == "__main__" :
print R.r
S2.p( )
-------- S2.py ------
import S1
def p( ) :
print S1.R.r
and my expectation was that the static variable 'r' of class
R would be identical when accessed from S1.py and S2.py.
Unfortunately, that isn't the case, the output is different
(and R seems to get instantiated twice).
But when I define R in S2.py instead
-------- S1.py ------
import S2
print S2.R.r
S2.p( )
-------- S2.py ------
import random
class R( object ) :
r = random.random( )
def p( ) :
print R.r
or, alternatively, if I put the defintion of class R into
a third file which I then import from the other 2 files,
things suddenly start to work as expected/ Can someone
explain what's going one here? I found this a bit sur-
prising.
This is, of course, not my "real" code - it would be much
more sensible to pass the number to the function in the
second file as an argument - but is the smallest possinle
program I could come up with that demonstrate the prob-
lem. In my "real" code it's unfortunately not possible
to pass that number to whatever is going to use it in the
other file, I have to simulate a kind of global variable
shared between different files.
Best regards, Jens