Использование переменных класса Python в качестве ключа dict является хорошей практикой? - PullRequest
0 голосов
/ 16 июня 2019

Интересно, если я использую переменные класса в качестве ключей в словаре, можно ли это считать хорошей практикой?Например, это объектная модель в peewee.

class Abc:
    name = CharField()
    age = IntegerField()

, тогда я объявляю для нее конфигурационный файл, подобный этому

conf = {Abc.name: Config(listable=False, format_on_edit=True), Abc.age: Config()}

Я не хочу использовать строку типа name, age в качестве ключей dict, потому что я боюсь опечаток и хочу убедиться, что поле Объект / Модель является действительным.

Я вижу, что Sqlalchemy или Peewee используют условие типа where(Abc.name=='abc') или filter(User.age == 25)не where('name', 'abc'), как многие другие формы из Go или PHP, так как они не имеют переменных класса.

Это очень хорошо для предотвращения опечаток.Я пробовал hash(Abc.name), и он работает, тогда переменные класса неизменны для использования в качестве ключей dict или нет ?

1 Ответ

1 голос
/ 17 июня 2019

Вы можете смело использовать их.Peewee заменяет экземпляры полей, которые вы объявляете как атрибуты модели, специальными объектами Descriptor (которые затем предоставляют базовый экземпляр поля, который можно хэшировать).

Например, при выполнении вставки или обновления вы можете указать данные, используяполя как ключи:

User.insert({User.username: 'charlie'}).execute()
...