gpt4 book ai didi

python - 允许保留关键字作为 Python 中的方法

转载 作者:行者123 更新时间:2023-12-03 08:00:02 26 4
gpt4 key购买 nike

看起来Python有一个保留关键字列表,不能用作方法名称。例如,

class A:
def finally(self):
return 0

返回SyntaxError:无效语法。有一种方法可以通过 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 中,可以将 Javascript 对象传递给 Python。由于目前的限制,目前,像 Promise.new(...).then(...).finally(...) 这样的 Python 代码会出现语法错误(参见 GH-pyodide#769) )

最佳答案

这在 Python 中是不可能的。 standard way如果名称被保留,则附加一个下划线(例如 finally_)。否则,您可以选择不同的名称。

在您的具体情况下,您拥有的是 JavaScript 代码,因此不清楚为什么您希望它也是有效的 Python 代码。如果它不是你需要在 Python 中执行的东西,那么它可能应该在字符串中而不是原始代码中;可能有一种方法可以告诉交叉编译器发出以字符串形式提供的 JavaScript 代码。如果您确实需要在 Python 环境中执行它,那么 getattr(promise, 'finally') 将会检索它;在 Python 中定义一个辅助函数来处理 JavaScript Promise 可能会很方便,这样您就不必到处编写 getattr

关于python - 允许保留关键字作为 Python 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64396988/

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