Strange effect with import

Jens Thoms Toerring jt at toerring.de
Thu Dec 20 15:39:19 EST 2012


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
-- 
  \   Jens Thoms Toerring  ___      jt at toerring.de
   \__________________________      http://toerring.de



More information about the Python-list mailing list