|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请帮我康康这段小代码,不知道为什么错了,哪位大佬看到我的代码后如果有任何建议都请写下来!写法,格式,不管是多小的建议都行,谢谢您们!
- class Const:
- def __init__(self):
- self.all_chang = {}
-
- def __setattr__(self, name, value):
- if check(name):
- raise TypeError('常量无法改变!')
- else:
- self.all_chang.setdefault(name,value)
- return __setattr__(name, value)
- def check(self, string):
- if self.string.isupper():
- if string in all_chang:
- return 1
- else:
- return 0
- else:
- raise TypeError('常量名必须由大写字母组成!')
- import sys
- sys.modules[__name__] = Const()
复制代码
底下是我的报错
Traceback (most recent call last):
File "E:/xiaojiayu/050 0.py", line 22, in <module>
sys.modules[__name__] = Const()
File "E:/xiaojiayu/050 0.py", line 3, in __init__
self.all_chang = {}
File "E:/xiaojiayu/050 0.py", line 6, in __setattr__
if check(name):
NameError: name 'check' is not defined
代码改成这样:
- class Const:
- def __setattr__(self, name, value):
- if self.check(name):
- raise TypeError('常量无法改变!')
- else:
- return super().__setattr__(name, value)
- def check(self, string):
- if string.isupper():
- if string in self.__dict__:
- return 1
- else:
- return 0
- else:
- raise TypeError('常量名必须由大写字母组成!')
- import sys
- sys.modules[__name__] = Const()
复制代码
然后执行:
- import const
- const.NAME = "FishC"
- print(const.NAME)
- try:
- # 尝试修改常量
- const.NAME = "FishC.com"
- except TypeError as Err:
- print(Err)
- try:
- # 变量名需要大写
- const.name = "FishC"
- except TypeError as Err:
- print(Err)
复制代码
|
|