un impopolare ma "supportato" pitone mod (vedi Guido: https://mail.python.org/pipermail/python-ideas/2012-May/014969.html) che consente l'utilizzo __getattr__
modulo attributi comporta quanto segue:moduli importate diventa nessun caso di sostituzione del modulo corrente a sys.modules utilizzando un oggetto classe
import os, sys
class MyClass(object):
def check_os(self):
print os
sys.modules[__name__] = MyClass()
all'importazione, questo modulo importato diventa un'istanza di classe:
>>> import myModule
>>> myModule
<myModule.MyClass object at 0xf76def2c>
Tuttavia, in Python-2.7, tutti gli altri moduli importati all'interno del modulo originale è impostato su Nessuno.
>>> repro.check_os()
None
In Python-3.4, tutto funziona:
>>> repro.check_os()
<module 'os' from '/python/3.4.1/lib/python3.4/os.py'>
Questo si sente come qualcosa a che fare con Imported modules become None when running a function, ma, qualcuno sa perché questo accade internamente?
Sembra che se si memorizza il modulo originale (senza sostituire completamente in Python-2) poi tutto continua a funzionare:
sys.modules[__name__+'_bak'] = sys.modules[__name__]