文件名为const.py
在另一个文件引入const
模块时会发现第一个print
输出const
,而第二个print
输出None
.为什么?
#!/usr/bin/python2.7
#coding:utf-8
import sys
class _const:
class ConstError(TypeError): pass
def __setattr__(self, key, val):
if self.__dict__.has_key(key):
raise self.ConstError, "can't rebind const(%s)" % key
else:
self.__dict__[key] = val
print __name__
sys.modules[__name__] = _const()
print __name__
本来
sys.modules[__name__]
是<module 'const' from 'const.py'>
你执行
sys.modules[__name__] = _const()
等于将const
module卸载再导入_const()
这个东东但实际这样导入是不对的,
_const()
只是个对象而已,跟module根本不搭噶所以
const
module实际上被卸载了,所以打印__name__
是None,因为它根本没被导入