python - 用于命名字符串常量的 Python 构造
问题描述
我经常使用字符串常量,例如:
DICT_KEY1 = 'DICT_KEY1'
DICT_KEY2 = 'DICT_KEY2'
...
很多时候我不介意实际的文字是什么,只要它们是独特的并且对人类读者来说是可以理解的。这样更容易在整个项目中重构和更改文字。
所以我的问题是,有没有一种标准方法可以让这些字符串常量声明更简单?我不想重复写文字'DICT_KEYn'
。
例如,这样的事情可以工作:
@string_consts
class DictKeys:
DICT_KEY1: str
DICT_KEY2: str
...
assert DictKeys.DICT_KEY1 == 'DICT_KEY1'
解决方案
如果有帮助,您的string_consts
装饰器的实现将是
def string_consts(cls):
for key, value in cls.__annotations__.items():
if value is str:
setattr(cls, key, key)
return cls
这使得
@string_consts
class DictKeys:
DICT_KEY1: str
DICT_KEY2: str
assert DictKeys.DICT_KEY1 == 'DICT_KEY1'
如您的示例工作OOTB。
推荐阅读
- javascript - 契约:如何匹配总和/联合类型?
- tizen - Tizen 电视模拟器未启动(未检测到 HAXM)
- excel - 按宏显示\隐藏按钮
- c# - Linq 从 2 个差异列表加入
- excel - 在另存为对话框中选择目录
- firebase - Firestore - 单个测试用户导致 50K+ 读取
- javascript - React Router 没有改变组件
- reactjs - 在 onClick 中使用 useDispatch 或 useState 时,.map 不是函数
- xamarin.forms - 媒体播放器实际上并没有在真实设备上播放
- powershell - 如何在PowerShell电子邮件中添加多个文件作为附件