| 
 | 
 
 
发表于 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']
 
  复制代码 
 
改进可以考虑主动抛出异常,这个就靠你自己去完成了! |   
 
 
 
 |