timmothy 发表于 2020-4-2 14:41:34

50讲 模块作业 求教

题目要求是设置一个常量Const类
常量的值不可修改,名字必须大写
我用小甲鱼的代码跑了一下
为什么下面的情况会不报错?

qiuyouzhi 发表于 2020-4-2 14:46:44

把文本代码发出来

timmothy 发表于 2020-4-2 14:49:48

qiuyouzhi 发表于 2020-4-2 14:46
把文本代码发出来

代码就这么长,第二张图可以理解为程序运行了之后在idle里测试了一下

qiuyouzhi 发表于 2020-4-2 14:51:51

timmothy 发表于 2020-4-2 14:49
代码就这么长,第二张图可以理解为程序运行了之后在idle里测试了一下

我要的是能复制的代码
我在本地测试

timmothy 发表于 2020-4-2 14:58:12

qiuyouzhi 发表于 2020-4-2 14:51
我要的是能复制的代码
我在本地测试

class Const:
    def __setattr__(self, name, value):
      if name in self.__dict__:
            raise TypeError('常量无法改变!')
            
      if not name.isupper():
            raise TypeError('常量名必须由大写字母组成!')

      self.__dict__ = value

import sys
sys.modules = Const()

qiuyouzhi 发表于 2020-4-2 15:04:22

timmothy 发表于 2020-4-2 14:58
class Const:
    def __setattr__(self, name, value):
      if name in self.__dict__:


刚才测试了下,你在调用的时候
必须要这样:
Const().name = 'A'

timmothy 发表于 2020-4-2 15:12:31

qiuyouzhi 发表于 2020-4-2 15:04
刚才测试了下,你在调用的时候
必须要这样:

可是这样子再对Const().NAME进行修改也没有提示不能修改常量的错误啊
页: [1]
查看完整版本: 50讲 模块作业 求教