¿Por qué cambia el valor de __name__ después de la asignación a sys.modules [__ name __]?

Mientras intenta hacer algo similar a lo que hay en la receta de ActiveState tituladaConstantes en Python by Alex Martelli, me encontré con el inesperado efecto secundario (en Python 2.7) que asignaba una instancia de clase a una entrada ensys.modules tiene, es decir, que al hacerlo aparentemente cambia el valor de__name__ aNone como se ilustra en el siguiente fragmento de código (que rompe parte del código en la receta):

class _test(object): pass

import sys
print '# __name__: %r' % __name__
# __name__: '__main__'
sys.modules[__name__] = _test()
print '# __name,__: %r' % __name__
# __name__: None

if __name__ == '__main__': # never executes...
    import test
    print "done"

Me gustaría entender por qué sucede esto. No creo que fuera así en Python 2.6 y versiones anteriores ya que tengo un código más antiguo donde aparentemente elif __name__ == '__main__': condicional funcionó como se esperaba después de la asignación (pero ya no lo hace).

FWIW, también noté que el nombre_test se está recuperando de un objeto de clase aNone, también, después de la asignación. Me parece extraño que se estén recuperando aNone en lugar de desaparecer por completo ...

Actualizar

Me gustaría agregar que cualquier solución para lograr el efecto deif __name__ == '__main__':, dado lo que sucede sería muy apreciado. TIA!

Respuestas a la pregunta(2)

Su respuesta a la pregunta