看起来 Python 有一个不能用作方法名称的保留关键字列表。例如,
class A:
def finally(self):
return 0
返回一个SyntaxError: invalid syntax
。有一种方法可以解决它getattr/setattr
,
class A:
pass
setattr(A, 'finally', lambda self: 0)
a = A()
print(getattr(a, "finally")())
工作正常。但是,a.finally()
仍然会产生一个SyntaxError: invalid syntax
.
有没有办法避免它?更具体地说,从源代码(或代码补丁)编译 CPython 3.8 时是否有一些设置可以避免此错误?
请注意,同样的错误发生在 PyPy 3 中。
上下文是在将 CPython 构建到 WebAssembly 的 Pyodide 中,可以将 Javascripts 对象传递给 Python。并且由于目前的限制,目前,Python 代码Promise.new(...).then(...).finally(...)
会出现语法错误(参见GH-pyodide#769)