Python设置常量不可修改的办法
《编写高质量代码–改善python程序的91个建议》这本书,第7个建议:"将常量集中到一个文件"时,印象深刻,觉得很有意义。推荐有机会的话阅读下此书。
此文:Python版本为3.6.9
1.常量统一放到一个文档里面
2.常量必须用大写字母
3.常量在文档里设置后不可再修改
__setattr__
的参考链接:https://blog.csdn.net/sinat_24354307/article/details/109881341
步骤1:验证阶段,编写const.py文件和test.py文件
const.py
import sys
class _Const(object):class ConstError(TypeError):passclass ConstCaseError(ConstError):passdef __setattr__(self, key, value):if self.__dict__.get(key) is not None: # 判断有没有该常量raise self.ConstError('%s 常量已存在' % key)elif not key.isupper(): # isupper判断常量是不是全是大写,可包含阿拉伯数字和下划线raise self.ConstCaseError('%s 常量需要全部大写' % key)else:self.__dict__[key] = value # 初次设置该常量时会执行这里sys.modules[__name__] = _Const()
test.py
import const
const.AGE = 10
print(const.AGE)
const.AGE = 10 #会报错,常量只能设置一次,同样的值设置2次当然也不行了。#用小写字母也会报错,小编就不再试了
步骤2:实际的情况,编写const.py脚本,配置完所有的常量。用到的地方直接import即可,下方有举例
const.py
import sysclass _Const(object):class ConstError(TypeError):passclass ConstCaseError(ConstError):passdef __setattr__(self, key, value):if self.__dict__.get(key) is not None: # 判断有没有该常量raise self.ConstError('%s 常量已存在' % key)elif not key.isupper(): # isupper判断常量是不是全是大写,可包含阿拉伯数字和下划线raise self.ConstCaseError('%s 常量需要全部大写' % key)else:self.__dict__[key] = value # 初次设置该常量时会执行这里sys.modules[__name__] = _Const()
import const
# 请在下方设置用到的所有常量,如果常量用小写字母会立即报错
const.AGE = 10
const.YEAR = 2020
const.NAME = "dachui"
测试脚本test.py如下
import const
print(const.AGE)
const.AGE = 12 #该行会报错
Python设置常量不可修改的办法相关推荐
- python设置路径_Python探索之修改Python搜索路径
当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块.可以通过sys.path查看这些路径,比如: >>> import sys >>&g ...
- python中的常量可以修改吗_python实现不可修改的常量
因为种种原因,Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量,至少截止2015年年末,还没有这个打算.Python程序一般通过约定俗成的变量名全大写的 ...
- python设置横坐标的值_python中画图如何修改横坐标大小?
原标题:python中画图如何修改横坐标大小? 用matplotlib画二维图像时,默认情况下的横坐标和纵坐标显示的值有时达不到自己的需求,需要借助xticks()和yticks()分别对横坐标x-a ...
- python中文版界面-python设置中文界面实例方法
下面,小编将通过一组实例演示,让大家更直观,更清楚明白的了解要设置中文这一内容的操作步骤. 首先展示实例代码: import pygame from pygame.locals import * de ...
- ubuntu查看默认python版本_ubuntu中修改默认Python版本号
一.背景 ubuntu中默认的Python版本是Python2.X,但是现在Python的最新版本是Python3.X. 那么怎么修改ubutun系统默认的Python解释器呢? 二.查看系统中是否安 ...
- 被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...
最近电脑罢工,重装了系统:很多常用软件都不得不重新安装,其实这都不是事儿,现在基本上都是百兆光纤了,下载安装都很顺溜. 浏览器也在安装之列,因为搞开发所以谷歌火狐浏览器都是必装的:平时基本上都是用谷歌 ...
- python的常量_如何给python中设定常量
操作步骤:在一个.py文件中写好一个const的文件.然后将这个文件放在安装python的lib路径下(具体const文件如截图) python实现不可修改的常量 因为种种原因,Python并未提供如 ...
- python设置二维列表_Python设置为列表
python设置二维列表 Python设置为列表 (Python Set to List) Sometimes we have to create a list from the set object ...
- python设置环境变量_Python设置环境变量
python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...
最新文章
- 只要7天 传统便利店就能免费升级无人超市
- 【Keras】The added layer must be an instance of class Layer.
- CNN已老,GNN来了:重磅论文讲述深度学习的因果推理
- linux退出 putty_使用putty远程连接linux防止关闭putty程序就停止
- C++ TR1、TR2与boost的关系
- Android开发者指南(29) —— USB Host and Accessory
- helm安装mysql_helm安装配置
- 深入理解javascript之原型和原型链
- wpf中左侧导航的实现
- C#:Interval Helper
- 原生JS实现简易转盘抽奖
- 在后台Service中直接启动Activity
- 自动翻转html,css--图片翻转二:自动翻转
- Skyline软件二次开发初级——5如何在WEB页面中的三维地图上使用事件函数
- 从零开始学电脑知识,一步一步到成为电脑知识高手
- 计算机艺术未来发展趋势,数字媒体艺术未来的发展趋势探讨
- 唯有志存高远,方能风行天下
- 游戏开发之Unity2021智能导航地图烘焙
- 知识分享-博客公众号推荐
- 基于JAVAWEB技术的网上珠宝系统的设计与实现
热门文章
- python规定浮点数类型可以不带小数部分吗_Python标准数据类型-数字
- blender2.8与2.7X的一些不同点
- python io密集型应用案例-Python中单线程、多线程和多进程的效率对比实验实例
- RabbitMQ集群并处理失败
- 因特尔计算棒(Intel Movidius Necural Compute)
- linux打开文件异常
- 9-4push方式整合Spark streaming.
- [Matlab] 传入 dsolve 的方程组必须是行向量才能求解
- YOLOv1深刻解读
- yolo数据集txt标注转voc数据集xml标注格式