Python sys.modules[\u\u name\u]=\u classname()。它实际上做什么?

Python sys.modules[\u\u name\u]=\u classname()。它实际上做什么?,python,Python,我正在阅读中提到的亚历克斯·马泰利的作品。我知道sys.modules[\uuuuu name\uuu]告诉您当前所在的模块,但他常量.py结尾的这行代码确实让我感到困惑。在文件末尾声明当前模块的语句的意义和意义是什么 # Put in const.py...: class _const: class ConstError(TypeError): pass def __setattr__(self,name,value): if self.__dict__.has

我正在阅读中提到的亚历克斯·马泰利的作品。我知道
sys.modules[\uuuuu name\uuu]
告诉您当前所在的模块,但他
常量.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
基本上,我的问题是,在我看来,这行代码没有任何作用;我理解错了吗?
因为在Python中,您不必将类定义放在单独的文件中,所以我认为除非我想重用类“const”,否则我实际上不需要两个模块。在这种情况下,
sys.moldules[\uu name\uu]=\u const()
也不是必需的。。。我是否正确理解了它?

我相信它正在将一个实例绑定到模块。因此,当您执行导入常量时,实际上会得到类
\u const
的一个实例


这允许您对其调用方法。例如,
\uuu setattr\uuuu
,在这种情况下,它检查您是否只绑定了一次变量。

因此,如果没有这行代码,执行
导入常量
将运行该python模块,而不是获取该类的实例?是的,
导入常量
将像正常的包导入一样运行,内部定义了一个名为
\u const
的类。并且给定下划线前缀,它不会通过
从const import*
导入(从)