gpt4 book ai didi

python - 如何在 Python 中使用保留字的变量名

转载 作者:行者123 更新时间:2023-11-28 20:55:37 28 4
gpt4 key购买 nike

当我在 python 中使用 peewee 来获取名为“类”的列的数据时,我遇到了一个问题。但是“class”是一个保留字,当我运行代码时,它总是以“SyntaxError: invalid syntax”停止。

如果我不包含 Class.class 列,这是我正在使用的代码。

query = (
Student.select(
Student.id,
Student.name,
Student.school_id,
School.name,
Student.class_id,
Class.class,
Class.grade,
)
.join(Class, join_type=pw.JOIN.INNER, on=(Class.id == Student.class_id))
.join(School, join_type=pw.JOIN.INNER, on=(School.id == Student.school_id))
.where(Student.id == id)
)

Class.class 的定义也是同样的错误:

class = CharField(max_length=45)

它应该给我一个没有错误的查询。所以我的问题是如何在 python 中使用保留名称的变量。谢谢!

最佳答案

一般情况下,您可以使用getattr 来访问保留关键字的名称;对于 class 属性:

query = (
Student.select(
Student.id,
Student.name,
Student.school_id,
School.name,
Student.class_id,
getattr(Class, 'class'), # equivalent to `Class.class` (if that were allowed)
Class.grade,
)
.join(Class, join_type=pw.JOIN.INNER, on=(Class.id == Student.class_id))
.join(School, join_type=pw.JOIN.INNER, on=(School.id == Student.school_id))
.where(Student.id == id)
)

但是,您可能希望将 Peewee 表定义中的属性重命名为非保留字的名称并使用 column_name='class'让它仍然引用物理表中的 class 属性:

klass = CharField(max_length=45, column_name='class')
# or maybe, if you prefer:
class_ = CharField(max_length=45, column_name='class')

关于python - 如何在 Python 中使用保留字的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288975/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com