Accessing variables in __init__.py

Gaudha sanal.vikram at gmail.com
Tue Oct 16 08:29:00 EDT 2012


On Tuesday, October 16, 2012 3:41:55 PM UTC+5:30, Marco Nawijn wrote:
> On Tuesday, October 16, 2012 10:48:17 AM UTC+2, Gaudha wrote:
> 
> > my_package/
> 
> > 
> 
> >   __init__.py
> 
> > 
> 
> >   my_module1.py
> 
> > 
> 
> >   my_module2.py
> 
> > 
> 
> >   variables.py
> 
> > 
> 
> > 
> 
> > 
> 
> > I want to define common variables in __init__.py and use the namespace in my_module1.py or my_module2.py. Defining it is not a problem. How can call it from my modules?
> 
> > 
> 
> > 
> 
> > 
> 
> > If I define them in a module (say, variables.py), I can call them by importing variables.py in other modules. How can it be done if I define it in __init__.py?
> 
> > 
> 
> > 
> 
> > 
> 
> > It may be a silly query as I am newbie in Python. But, I would be grateful to get help.
> 
> 
> 
> Hi,
> 
> 
> 
> If you store the variables in __init__.py, you can import them from the package. So in your case suppose __init__.py contains:
> 
> a = 10
> 
> b = {1 :"Hello", 2: "World" }
> 
> 
> 
> Than if you import my_package, you can access the variables as follows (interactive IPython session):
> 
> 
> 
> In [1]: import my_package
> 
> 
> 
> In [2]: my_pack
> 
> my_package   my_package/  
> 
> 
> 
> In [2]: my_package.
> 
> my_package.a  my_package.b  
> 
> 
> 
> In [2]: my_package.a
> 
> Out[2]: 10
> 
> 
> 
> In [3]: my_package.b
> 
> Out[3]: {1: 'Hello', 2: 'World'}
> 
> 
> 
> In [4]:

Yea. I got it. It was a new information for me. A module in a package can import its own mother package to call the variables in __init__.

Is it funny or an extraordinary feature? Anyway. I felt it as something weird. Guido should have done it something like how 'self' behaves in classes.



More information about the Python-list mailing list