Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #35219

Strange effect with import

From jt@toerring.de (Jens Thoms Toerring)
Newsgroups comp.lang.python
Subject Strange effect with import
Date 2012-12-20 20:39 +0000
Organization Freie Universitaet Berlin
Message-ID <ajhbbnFe4q1U1@mid.uni-berlin.de> (permalink)

Show all headers | View raw


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@toerring.de
   \__________________________      http://toerring.de

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Strange effect with import jt@toerring.de (Jens Thoms Toerring) - 2012-12-20 20:39 +0000
  Re: Strange effect with import Dave Angel <d@davea.name> - 2012-12-20 15:59 -0500
  Re: Strange effect with import Peter Otten <__peter__@web.de> - 2012-12-20 22:11 +0100
  Re: Strange effect with import Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-12-20 22:13 +0000
    Re: Strange effect with import jt@toerring.de (Jens Thoms Toerring) - 2012-12-20 22:52 +0000
      Re: Strange effect with import Terry Reedy <tjreedy@udel.edu> - 2012-12-20 19:54 -0500
        Re: Strange effect with import jt@toerring.de (Jens Thoms Toerring) - 2012-12-21 01:12 +0000
      Re: Strange effect with import Hans Mulder <hansmu@xs4all.nl> - 2012-12-21 01:54 +0100
        Re: Strange effect with import jt@toerring.de (Jens Thoms Toerring) - 2012-12-21 01:25 +0000
        Re: Strange effect with import jt@toerring.de (Jens Thoms Toerring) - 2012-12-21 15:52 +0000

csiph-web