有没有办法让类装饰器在Google App Engine 上工作,它仅限于 Python 2.5
?
或者让我换个说法:是否有可能从它已经执行的同一进程中改变 Python 解析器的行为?示例:
good.py:
alter_python_parser()
import bad
坏.py:
@decorated
class Foo(object): pass
或者这可能是根本不可能的。
说明:我想使用大量使用类装饰器的第三方库,并且不想 fork 它并维护我自己的版本。另一种方法是在 Typhoon App Engine
上运行我的代码 使用更新的 python,但我担心谷歌不会在很长一段时间内升级他们的 Python 版本......
EDIT:
如何创建一个 new-style import hook那会即时进行字符串替换并从内存中加载模块吗?那应该是可能的。如果目前还没有实现,我会尝试一下。
但是我该如何解析 Python 2.6+
来自 Python 2.5
的代码?是否有仅适用于 python 的解析器?什么是PYPY
有什么用?
最佳答案
装饰器只是语法糖。只是改变装饰器使用的实例,即
@decorated
class Foo(object): pass
成为
class Foo(object): pass
Foo = decorated(Foo)
实际上,您无法更改解析器。
不过,您可以使用 ast module 自动执行上述过程(在新版本的 Python 中)。
关于python - Python 2.5 中的类装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307419/