使用python类变量作为dict键是一种好习惯吗?

时间:2019-06-16 18:56:11

标签: python dictionary peewee class-variables

我想知道我是否将类变量用作字典中的键,是否可以认为这是一种好习惯? 例如,这是peewee中的对象模型。

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

然后我为此声明一个配置命令

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

我不想使用像nameage这样的字符串作为dict键,因为我怕弄错了,并且想确保“对象/模型”字段有效。

我看到Sqlalchemy或Peewee正在使用类似where(Abc.name=='abc')filter(User.age == 25)的条件,而不是像Go或PHP中的许多其他orm那样的where('name', 'abc'),因为它们没有类变量。

对于防止误涂非常好。 我尝试过hash(Abc.name),它可以正常工作,然后类变量不能用作dict键

1 个答案:

答案 0 :(得分:1)

您可以安全地使用它们。 Peewee用特殊的Descriptor对象替换了您声明为模型属性的字段实例(该对象随后公开了可哈希的基础字段实例)。

例如,在执行插入或更新时,您可以使用字段作为键来指定数据:

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