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

如何在Python中使用保留字的变量名,python,peewee,Python,Peewee,我在python中使用peewee获取名为“class”的列数据时遇到了一个问题。但是'class'是一个保留字,当我运行代码时,它总是以'SyntaxError:invalid syntax'停止 下面是我正在使用的代码,如果我不包括Class.Class列,它就可以工作 query=( 学生选择( 学生证, 学生姓名, 学生号,学校号, 学校名称, 学生.class\u id, 班级,班级, 班级, ) .join(Class,join\u type=pw.join.INNER,on=(Cl

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

下面是我正在使用的代码,如果我不包括Class.Class列,它就可以工作

query=(
学生选择(
学生证,
学生姓名,
学生号,学校号,
学校名称,
学生.class\u id,
班级,班级,
班级,
)
.join(Class,join\u type=pw.join.INNER,on=(Class.id==Student.Class\u id))
.join(School,join\u type=pw.join.internal,on=(School.id==Student.School\u id))
.其中(Student.id==id)
)
以及Class.Class的定义,这也会导致相同的错误:

class = CharField(max_length=45)

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

通常,您可以使用
getattr
访问保留关键字的名称;对于
属性:

query=(
学生选择(
学生证,
学生姓名,
学生号,学校号,
学校名称,
学生.class\u id,
getattr(Class,'Class'),相当于'Class.Class'(如果允许的话)
班级,
)
.join(Class,join\u type=pw.join.INNER,on=(Class.id==Student.Class\u id))
.join(School,join\u type=pw.join.internal,on=(School.id==Student.School\u id))
.其中(Student.id==id)
)
但是,您可能希望将Peewee表定义中的属性重命名为非保留字的属性,并使用它仍然引用物理表中的
class
属性:

klass=CharField(最大长度=45,列名为class')
#或者,如果您愿意:
class=CharField(最大长度=45,列名为class')

您应该将class属性命名为
class(或非保留的名称),然后使用Peewee字段的参数将其设置为“class”

不可能以这种方式使用保留字,但通常会添加下划线以避免发生诸如class_uu之类的冲突,因此您的代码将使用class.class_uu甚至class.class_uu。您可以重命名自己的字段吗?@Sayse让我们假设OP有一个外部数据库,他们只需要使用Peewee进行访问。:)@AKX-我认为这不是一个公平的假设,因为显而易见的答案是不要将变量命名为与保留变量相同的名称words@SayseAKX是对的。我们需要访问外部数据库,无法编辑该数据库中的结构或数据。:)