使用 python class 变量作为字典键是好习惯吗?

Using python class variables as dict key is good practice?

我想知道如果我使用 class 变量作为字典中的键是否可以被认为是一种好的做法? 例如,这是 peewee 中的对象模型。

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

然后我像这样为它声明一个配置字典

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

我不想使用 nameage 之类的字符串作为字典键,因为我害怕输入错误,并且想确保对象/模型字段有效。

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

防止打错的效果还是不错的。 我试过 hash(Abc.name) 并且它工作 class 变量 是否不可变用作字典键?

您可以放心使用它们。 Peewee 将您声明为模型属性的字段实例替换为特殊的 Descriptor 对象(然后公开可哈希的基础字段实例)。

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

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