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):
pass
class ConstCaseError(ConstError):
pass
def __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 sys
class _Const(object):
class ConstError(TypeError):
pass
class ConstCaseError(ConstError):
pass
def __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 #該行會報錯
相關文章
- alpine 映象設定時區的有效辦法
- sbt卡住的解決辦法,sbt設定代理
- PPT全程背景音樂設定辦法
- CSS如何設定不可點選?CSS如何設定不可點選的實現方法CSS
- SAP系統可不可以修改設定[T-CODE]
- getSupportFragmentManager()方法不可用解決辦法Fragment
- 介面常量值可被修改
- vi在修改漢字的時候,把漢字作為一個字元處理的設定辦法字元
- oracle rac修改ip的處理辦法Oracle
- OpenStack 映象密碼修改辦法密碼
- Mac終端給命令設定別名alias的辦法Mac
- 預設角色的設定和修改
- 設定為disabled不可用的表單元素的value值無法傳送
- 設定View的可見以及不可見View
- UICollectionView設定行間距失效,解決辦法UIView
- 修改python語法注意Python
- win10 invalid顯示設定不可用怎麼辦_win10 invalid顯示設定不可用如何修復Win10
- win10提示無法設定你的pin怎麼辦_win10設定pin提示無法設定你的pin解決步驟Win10
- python 將預設2.7 python環境修改為2.6之後,yum命令不可用Python
- vue中設定了scoped無法修改elementUI元件問題VueUI元件
- 預設輸入法怎麼設定win10_win10系統修改預設輸入法的教程Win10
- OpenStack fuel-web不可用解決辦法Web
- SPFILE引數修改錯誤的解決辦法
- 幾種解決“藍芽不可用”問題的辦法藍芽
- CMOS設定不當引起的電腦故障解決辦法
- 【vue隨手筆記】Vue設定靜態常量Vue筆記
- js物件導向程式設計:如何定義常量?JS物件程式設計
- nivida顯示設定不可用win10怎麼辦_win10筆記本nivida顯示設定不可用修復方法Win10筆記
- win10桌面桌布被鎖定無法修改怎麼辦_win10桌面桌布被鎖定無法更改的解決方法Win10
- laravel8 時區設定無效解決辦法Laravel
- php定義常量方法的區別PHP
- windows10設定無法使用怎麼辦_window10設定打不開的解決方法Windows
- 設定連結a可用和不可用
- WAS修改了主機名的設定方法
- windows10系統無法修改檔案的預設開啟方式怎麼辦Windows
- vue 常量定義和使用Vue
- JavaScript 常量定義詳解JavaScript
- vue常量定義以及使用Vue