我想知道我是否将类变量用作字典中的键,是否可以认为这是一种好习惯? 例如,这是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)
的条件,而不是像Go或PHP中的许多其他orm那样的where('name', 'abc')
,因为它们没有类变量。
对于防止误涂非常好。
我尝试过hash(Abc.name)
,它可以正常工作,然后类变量不能用作dict键?
答案 0 :(得分:1)
您可以安全地使用它们。 Peewee用特殊的Descriptor对象替换了您声明为模型属性的字段实例(该对象随后公开了可哈希的基础字段实例)。
例如,在执行插入或更新时,您可以使用字段作为键来指定数据:
User.insert({User.username: 'charlie'}).execute()