При использовании словарных (dict) ключей в Python, похоже, существует несколько общих подходов:
-
some_dict['key_name'] # string constants everywhere
-
some_dict[KeyConstants.key_name] # where class KeyConstants: key_name: 'key_name'
-
some_dict[KEY_NAME] # with from some_module import KEY_NAME # a module level constant
-
"key_name" имеет тот недостаток, что вы повторяете константы во всем коде. Это не СУХОЙ. Хуже того, если вы когда-нибудь захотите опубликовать свой API (в самом широком смысле), у вас будут потребители вашего API, которые повторяют эти константы повсюду, и если вы когда-либо захотите изменить "key_name" на "better_key_name", это будет изменением.
-
Это типизированный язык, СУХОЙ подход, с константами, объединенными в одном месте. Его единственные недостатки в том, что он уродливый, немного менее читаемый и более многословный. Принципы пифонов в первую очередь запрещают это. Это позволяет вам легко изменять константу, представляющую ключ, поскольку все кодируются против переменной KeyConstants.key_name. Он также хорошо работает с IDE для рефакторинга.
-
Константы уровня модуля рекомендуются в руководстве по стилю PEP 8. ALL_CAPS_ARE_LOUD и сложнее ввести. Это имеет некоторые преимущества обоих вариантов 1 и 2.
-
Каковы некоторые другие рекомендации для констант ключа ключа? Какой из вышеуказанных подходов является предпочтительным и когда?