版权声明:资源类仅用于学习交流,禁止商用!!! https://blog.csdn.net/GentleCP/article/details/88625595
前言
一个好的python程序员除了能够把功能、逻辑实现以外,还应该让你的代码可读性更强、拓展性更高,本文主要介绍python编程中经常用到的固定变量应该如何进行编写。
在我们编写程序的时候有的变量一旦在设定之后就不会再进行变动,对于这些变量,程序员之间有一种约定俗成的方式,所有字母大写并用下划线分隔单词的方式(如MAX_VALUE, OUT_TIME等),但这种方式没办法避免在程序中该变量被修改。
python版本:3.6.7
自定义类实现常量功能
这种办法就是解决简单用全大写和下划线定义固定变量无法解决篡改的问题。
下面是一个例子:
创建一个 constant.py 文件,在其中创建const类
class Const():
class ConstError(TypeError): pass
class ConstCaseError(ConstError): pass
def __setattr__(self, key, value):
print()
if key in self.__dict__.keys():
# 存在性验证
raise self.ConstError("Can't change a const variable: '%s'" % key)
if not key.isupper():
# 语法规范验证
raise self.ConstCaseError("Const variable must be combined with upper letters:'%s'" % key)
self.__dict__[key] = value
在另一个需要创建固定变量的测试文件中导入该模块
from constant import Const
const = Const()
const.TEST = 'HH'
print(const.TEST)
const.TEST = 'JJ' # 尝试修改变量
结果:
可以看到当我们试图给固定变量赋新值的时候会抛出异常
再试试第二个异常,如果设置的固定变量字母不全为大写则抛出异常:
from constant import Const
const = Const()
const.test = 'HH'
# print(const.TEST)
# const.TEST = 'JJ'