【发布时间】:2019-06-16 18:56:11
【问题描述】:
我想知道我是否使用类变量作为字典中的键,这可以被认为是一种好习惯吗? 比如这是peewee中的对象模型。
class Abc:
name = CharField()
age = IntegerField()
然后我像这样为它声明一个配置字典
conf = {Abc.name: Config(listable=False, format_on_edit=True), Abc.age: Config()}
我不想使用像name、age 这样的字符串作为字典键,因为我害怕输入错误,并且想确保对象/模型字段有效。
我看到 Sqlalchemy 或 Peewee 使用像 where(Abc.name=='abc') 或 filter(User.age == 25) 这样的条件,而不是像 Go 或 PHP 中的许多其他 orm 那样使用 where('name', 'abc'),因为它们没有类变量。
这对于防止输入错误非常有用。
我已经尝试过hash(Abc.name) 并且它可以工作,然后类变量对于用作 dict 键是不可变的?
【问题讨论】:
-
您听说过
https://docs.python.org/3/library/enum.html吗?这也是 django 吗? -
@DeveshKumarSingh 我在其他上下文中使用枚举,但这是关于模型字段,许多字段是在一个模型对象中定义的,它们不是 ENUM 类型,并且配置字典用于模型对象.如果我将它们(字段名称)重新声明为 ENUM 类型,那将毫无用处。这不是 django
-
"那么类变量作为字典键使用是不可变的?"你在问什么?请注意,您没有使用类 variables 作为键,变量不能是键,对象是键,并且您正在使用类变量引用的对象在创建字典的那一刻 i> 作为键。如果这就是你要问的。
-
@juanpa.arrivillaga 是的,那你还没回答问题?
-
我不明白你在问什么
标签: python dictionary peewee class-variables