Оправдано ли использование перечислений в этом случае? - PullRequest
0 голосов
/ 07 декабря 2018

Итак, в прошлом я поддерживал конфигурации как диктовки, а потом наткнулся на перечисления в python.Вот что я делал раньше:

CONFIG = {
  "field1": {"field11": "value11", ....},
  "field2": {"field12": "value22", .....},
}

Это было бы глобально и содержало бы некоторую конфигурацию, которую использовало бы мое приложение.Затем я преобразовал то же самое, используя перечисления:

from enum import Enum, unique

@unique
class Config(Enum):
    field1 = {"field11": "value11", .....}
    field2 = {"field22": "value22", .....}

Преимущество использования перечислений было довольно туманным, но когда я начал копать глубоко, я обнаружил, что перечисления неизменны, можно обеспечить уникальность, и он предлагаетболее чистый способ перебора всех его членов.

Я проверил, использовалось ли это в какой-либо из сторонних или стандартных библиотек python.Я обнаружил, что большинство из них используют класс следующим образом:

class Config:
    field1 = {"field11": "value11", .....}
    field2 = {"field22": "value22", .....}

Поэтому мой вопрос: - это хороший выбор для хранения конфигов, которые не должны быть случайно изменены илиэто просто излишество, и вместо этого можно использовать класс?

Хотелось бы узнать, какой из них считается лучшим.

1 Ответ

0 голосов
/ 17 декабря 2018

Основным преимуществом использования enum в вашем вопросе является то, что он позволяет записывать символические константы в коде, тогда как при использовании словаря вам придется проверять словарь на ключ, например:

Config.field1

против

Config["field1"]

Таким образом, разница будет иметь преимущество в синтаксисе, но также в том, что enum по своей природе неизменен в отличие от словаря, а также в том, что enum не может быть расширен в отличие от класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...