您好,我正在尝试使用在 Python 中创建常量(在链接的第一个答案中)中找到的这个示例在 python 中创建一个常量,并将实例用作模块。
第一个文件 const.py 有
# Put in const.py...:
class _const:
class ConstError(TypeError): pass
def __setattr__(self,name,value):
if self.__dict__ in (name):
raise self.ConstError("Can't rebind const(%s)"%name)
self.__dict__[name]=value
import sys
sys.modules[__name__]=_const()
其余的例如到 test.py。
# that's all -- now any client-code can
import const
# and bind an attribute ONCE:
const.magic = 23
# but NOT re-bind it:
const.magic = 88 # raises const.ConstError
# you may also want to add the obvious __delattr__
尽管我做了 2 处更改,因为我使用的是 python 3,但我仍然遇到错误
Traceback (most recent call last):
File "E:\Const_in_python\test.py", line 4, in <module>
const.magic = 23
File "E:\Const_in_python\const.py", line 5, in __setattr__
if self.__dict__ in (name):
TypeError: 'in <string>' requires string as left operand, not dict
我不明白第 5 行错误是什么。谁能解释一下?纠正这个例子也很好。提前致谢。