原来自己写一个单独的类文件,常常是文件一个名字,类一个名字,在别的文件导入的时候则需要这样些:
from 文件名 import *
from 文件名 import 类名
今天看这个文章的时候让python程序更加pythonic的建议(一)看到这么一段代码:
class _const:
class ConstError(TypeError): pass
class ConstCaseError(ConstError): pass
def __setattr__(self, name, value):
if self.__dict__.get(name):
raise self.ConstError("Can't change const. %s" %name)
if not name.isupper():
raise self.ConstCaseError(\
'const name "%s" is not all uppercase' %name)
self.__dict__[name] = value
import sys
sys.modules[__name__] = _const()
最后一句:
sys.modules[__name__] = _const()
其中sys.modules
是IDE启动后导入的所有模块的一个字典,__name__
则是当前的模块名
关键点就在于__name__
在shell模式下是__main__
,在被导入的时候是其所在文件的文件名.
所以当上述文件被存为const.py时,我们在别的文件中:import const
的时候,const已经是作为类_const的一个实例存在于运行环境中了