我正在阅读这个问题中提到的 Alex Martelli 的这段代码。我知道这告诉你你当前所在的模块,但是他末尾的这行代码确实让我感到困惑。在文件末尾声明当前模块的语句的含义和意义是什么?sys.modules[__name__]constant.py
# Put in const.py...:
class _const:
class ConstError(TypeError): pass
def __setattr__(self,name,value):
if self.__dict__.has_key(name):
raise self.ConstError, "Can't rebind const(%s)"%name
self.__dict__[name]=value
import sys
sys.modules[__name__]=_const() #this I don't understand
# that's all -- now any client-code can
import const
Run Code Online (Sandbox Code Playgroud)
基本上,我的问题是,在我看来,这行代码没有做任何事情;我理解错了吗?由于在 Python 中,您不必将类定义放在单独的文件中,因此我认为我并不真正需要两个模块,除非我想重用“const”类。那么在这种情况下sys.moldules[__name__]=_const()也没有必要......我理解正确吗?
小智 2
我相信它将一个实例绑定到模块。因此,当您这样做时import const,您实际上获得了该类的一个实例_const。
这允许您调用它的方法。例如,__setattr__在本例中,它会检查您是否只绑定一个变量一次。
| 归档时间: |
|
| 查看次数: |
5205 次 |
| 最近记录: |