【问题标题】:Overwriting default behavior for python operators覆盖 python 运算符的默认行为
【发布时间】:2010-10-27 05:13:33
【问题描述】:

我知道要更改 python 中运算符的默认行为,您可以覆盖一些默认方法,例如 __add____sub__ 用于 + 和 -,但没有找到任何可以覆盖 andor 关键字,而有一些用于位运算符&|:分别为__and____or__

你知道这些关键字是否也有钩子吗?我知道覆盖andor 的默认行为很奇怪,但我需要它在运行时从python 公式开始构造一个抽象语法树,我真的不想以一种奇怪的方式改变它的语义。

如果没有,我想修改语言本身以获得这种支持。如果有一些好的专家可以建议我正确的方法,请举手,否则我想我会问 Guido :)

非常感谢各位!

【问题讨论】:

    标签: python dynamic-languages


    【解决方案1】:

    isandor 不能重载。如果您想编写 Pythonesque DSL,请使用 Python language services

    【讨论】:

    • 谢谢,你说得很清楚。但是我认为我需要直接修改 python 来支持这一点。这是抽象解释技术的概念证明,因此我需要按照我所说的方式执行此操作,因为我需要在运行时决定使用这些钩子从现有代码中遵循的路径。
    • 你不需要为此修改 Python,即。 Ren'Py。
    • 他们编写了一个引擎,让您可以使用混合了 Python 代码和 Ren'Py 语句的脚本。我的意思是,当您只需要一种更灵活的解析代码和生成 AST 的方式时,无需在 C 级别对其进行修改。
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 2013-03-10
    • 2023-03-21
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多