Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python类变量作为dict键是一种好的做法吗?_Python_Dictionary_Peewee_Class Variables - Fatal编程技术网

使用python类变量作为dict键是一种好的做法吗?

使用python类变量作为dict键是一种好的做法吗?,python,dictionary,peewee,class-variables,Python,Dictionary,Peewee,Class Variables,我想知道如果我在字典中使用类变量作为键,这算是一种好的做法吗? 例如,这是peewee中的对象模型 class Abc: name = CharField() age = IntegerField() 然后我像这样为它声明一个配置dict conf = {Abc.name: Config(listable=False, format_on_edit=True), Abc.age: Config()} 我不想使用像name、age这样的字符串作为dict键,因为我害怕输入错误,

我想知道如果我在字典中使用类变量作为键,这算是一种好的做法吗? 例如,这是peewee中的对象模型

class Abc:
    name = CharField()
    age = IntegerField()
然后我像这样为它声明一个配置dict

conf = {Abc.name: Config(listable=False, format_on_edit=True), Abc.age: Config()}
我不想使用像name、age这样的字符串作为dict键,因为我害怕输入错误,并且希望确保Object/Model字段有效

我看到Sqlalchemy或Peewee正在使用wherebc.name='abc'或filterUser.age==25这样的条件,而不是像Go或PHP中的许多其他ORM那样使用where'name'、'abc',因为它们没有类变量

这对防止打字错误很有好处。
我尝试过hashAbc.name,它可以工作,那么类变量是否可以作为dict键使用是不可变的?

您可以安全地使用它们。Peewee将声明为模型属性的字段实例替换为特殊的描述符对象,然后这些描述符对象将公开可散列的底层字段实例

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

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

你听说了吗https://docs.python.org/3/library/enum.html ? 这也是django?@DeveshKumarSingh我在其他上下文中使用enum,但这是关于模型字段的,许多字段在一个模型对象中定义,它们不是enum类型,配置dict是针对模型对象的。如果我将它们的字段名重新声明为枚举类型,这是没有用的。这不是问题,那么类变量是否作为dict键使用是不可变的?你在问什么?注意,您没有使用类变量作为键,变量不能是键,对象是键,并且在创建dict作为键时,您正在使用类变量引用的对象。如果这就是你要问的。@juanpa.arrivillaga是的,那么你还没有回答这个问题?我不太明白你在问什么