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設定代理
- CSS如何設定不可點選?CSS如何設定不可點選的實現方法CSS
- 修改python語法注意Python
- python 將預設2.7 python環境修改為2.6之後,yum命令不可用Python
- win10 invalid顯示設定不可用怎麼辦_win10 invalid顯示設定不可用如何修復Win10
- Mac終端給命令設定別名alias的辦法Mac
- 預設輸入法怎麼設定win10_win10系統修改預設輸入法的教程Win10
- UICollectionView設定行間距失效,解決辦法UIView
- vue中設定了scoped無法修改elementUI元件問題VueUI元件
- win10提示無法設定你的pin怎麼辦_win10設定pin提示無法設定你的pin解決步驟Win10
- nivida顯示設定不可用win10怎麼辦_win10筆記本nivida顯示設定不可用修復方法Win10筆記
- 幾種解決“藍芽不可用”問題的辦法藍芽
- 【vue隨手筆記】Vue設定靜態常量Vue筆記
- laravel8 時區設定無效解決辦法Laravel
- php定義常量方法的區別PHP
- Python教程:Python程式設計中不可忽視的docstring妙用Python程式設計
- windows10設定無法使用怎麼辦_window10設定打不開的解決方法Windows
- 設定連結a可用和不可用
- nvidia顯示設定不可用 nvidia沒有顯示設定
- windows10系統無法修改檔案的預設開啟方式怎麼辦Windows
- win10系統無法設定移動熱點怎麼辦 win10無法設定移動熱點的方法Win10
- CentOS7預設的快捷鍵如何修改設定CentOS
- axios 修改Content-Type設定iOS
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- vue常量定義以及使用Vue
- vue 常量定義和使用Vue
- 電腦共享資料夾怎麼設定 電腦共享文件的辦法
- Android設定加密鎖屏不可訪問MTPAndroid加密
- js input 不可編輯可傳值設定JS
- 前端定義一個物件的時候,key值如何設定為數字,並抽成常量前端物件
- win10桌面桌布被鎖定無法修改怎麼辦_win10桌面桌布被鎖定無法更改的解決方法Win10
- 如何修改MacOS預設輸入法?Mac
- PHP基本語法學習 常量PHP
- PHP基本語法學習 [常量]PHP
- 織夢繫統引數設定出現Token mismatch!提示的解決辦法
- Python語法--可變型別和不可變型別Python型別
- 前端如何定義一個常量前端