开发者

Class decorators in Python 2.5?

开发者 https://www.devze.com 2023-01-28 00:44 出处:网络
Is there a way I can make class decorators work on Google App Engine, which is limited to Python 2.5?

Is there a way I can make class decorators work on Google App Engine, which is limited to Python 2.5?

Or let me rephrase that: is it possible to alter the behavior of Python's parser from the same process that it is already executing? Example:

good.py:

alter_python_parser()
import bad

bad.py:

@decorated
class Foo(object): pass

Or is this maybe just plainly impossible.

Explanation: I want to use a third party library that heavily uses class decorat开发者_开发问答ors, and don't want to fork it and maintain my own version. An alternative would be to run my code on Typhoon App Engine with a newer python, but I fear Google won't upgrade their Python version for a loooong time...

EDIT:

How about creating a new-style import hook that would do string substitution on-the-fly and load the module from memory? That should be possible. I'll give it a try, if there's no implementation already out there.

But how can I parse Python 2.6+ code from Python 2.5? Is there a python-only parser? What does PYPY use?


Decorators are just syntactic sugar. Just change instances of decorator usage, that is,

@decorated
class Foo(object): pass

becomes

class Foo(object): pass
Foo = decorated(Foo)

You can't, realistically, change the parser.

Though, you could automate the above process using the ast module (in a new version of Python).

0

精彩评论

暂无评论...
验证码 换一张
取 消