How to clean a module?

Maric Michaud maric at aristote.info
Thu May 31 12:17:05 EDT 2007


ai a écrit :
> It assumes that there is a module A which have two global variables X
> and Y. If I run "import A" in the IDLE shell, then I can use A.X and
> A.Y correctly. But if I want to change the module A and then delete
> the variable Y, I find I can use A.Y just the same as before!

It's unlikely to be true, see below.

> In fact, I have tried all the following methods but can't remove the
> A.Y:
> execute "import A" again
> "reload(A)"
> "del A; import A"
> Yes, if you use "del A.Y", it works. But it is stupid since there are
> probably many names. In my thought, if no one references objects in A,
> "del A" will release all memory about A. But it seems that the fact is
> not. So I can not refresh the namespace to follow changes of a module
> easily and I will worry about the memory if I del a module.
> I want to know if there is a way to clear a module entirely.
> 

Actually I do not see your problem and your exact need, when I type the 
following in python prompt I just see expected behavior, what is a 
problem to you ? Maybe you could post a code explaining it.
 

In [64]: import a 

 

In [65]: a.X 

Out[65]: 0 

 

In [66]: a.X = 2 

 

In [67]: del a 

 

In [68]: import a as b 

 

In [69]: b.X 

Out[69]: 2 
 


In [71]: for name in [ n for n in b.__dict__ if not n.startswith('__') ] 
:
    ....:     b.__dict__.__delitem__(name) 

    ....: 

    ....: 

 

In [72]: b.X 

--------------------------------------------------------------------------- 

<type 'exceptions.AttributeError'>        Traceback (most recent call 
last)
 

C:\Documents and Settings\maric\Bureau\<ipython console> in <module>() 

 

<type 'exceptions.AttributeError'>: 'module' object has no attribute 'X' 

 

In [73]: reload(b) 

Out[73]: <module 'a' from 'a.pyc'> 

 

In [74]: b.X 

Out[74]: 0 


In [75]: del b.X 

 

In [76]: del b 

 

In [77]: import a 

 

In [78]: a.b 

--------------------------------------------------------------------------- 

<type 'exceptions.AttributeError'>        Traceback (most recent call 
last)
 

C:\Documents and Settings\maric\Bureau\<ipython console> in <module>() 

 

<type 'exceptions.AttributeError'>: 'module' object has no attribute 'b' 

 




More information about the Python-list mailing list