|
发表于 2021-9-7 13:21:08
|
显示全部楼层
回帖奖励 +1 鱼币
本帖最后由 白two 于 2021-9-7 13:22 编辑
首先,你定义的是实例方法,需要创建实例在去调用
其次,正常调用不会报错,应为能够按照你类里面设置的方法去处理,就不会抛出异常,除非你主动抛出异常,比如如果输入的属性名字位小写,就抛出啥异常之类的
- class const:
- _attrs = []
-
- def __setattr__(self, name, value):
- if name not in self._attrs:
- if str(name).isupper():
- self._attrs.append(name)
- super().__setattr__(name, value)
- else:
- raise TypeError('常量名必须由大写字母组成!')
- else:
- raise TypeError('常量无法改变!')
- print(self._attrs)
- c = const()
- c.NAME = "FishC"
- print(c.NAME)
- try:
- # 尝试修改常量
- c.NAME = "FishC.com"
- print(c.NAME)
- except Exception as Err:
- print(Err)
- try:
- # 变量名需要大写
- c.name = "FishC"
- print(c.name)
- except Exception as Err:
- print(Err)
- print(c._attrs)
复制代码
下面是运行结果:
- ['NAME']
- FishC
- 常量无法改变!
- 常量名必须由大写字母组成!
- ['NAME']
复制代码
改进可以考虑主动抛出异常,这个就靠你自己去完成了! |
|