重写python脚本,在每个脚本类中插入一个方法

|| 假设我有一个python模块foo.py,其中包含:
class Foo(object):
    def __init__(self):
        pass
接下来,我想解析此脚本,并在其每个类中注入一个方法,然后将其重写为如下所示:
class Foo(object):
    def __init__(self):
        pass
    def my_method(self):
        pass # do some stuff here
我已经注意到python 2.6有一个
ast
模块可以用于此目的,但是不幸的是我需要在python 2.5中做到这一点。任何建议都欢迎。     
已邀请:
我了解您正在尝试做的事情,但是如果您的源代码相当简单,也许您可​​以跳过整个解析和回写过程,而只运行正则表达式? 就像是:
re.sub(\'^class\\s+(\\w+):\\s*\\n\', \'class \\\\1:\\n%s\' % method_source, file_source, flags=re.M)
只要正确地缩进即可。     
你已经有脚本了吗?您应该可以立即对其进行修补。为了满足您当前的要求,可以使用以下方法:
class Foo(object):
    def my_method(self):
        pass
另外,您可以定义
my method
并将其作为属性添加到
Foo
类中:
def my_method(self):
    pass

Foo.my_method = my_method
#or
Foo.__dict__.my_method = my_method
    
一个解决方案是:
class Foo(object):
    def __init__(self):
        pass

import new

def some_func(self):
    print \"foobar\"

Foo.my_method = new.instancemethod(some_func, None, Foo)
问题是,我不喜欢在文件末尾附加新的方法定义。我希望生成的脚本中的类如下所示:
class Foo(object):
    def __init__(self):
        pass
    def my_method(self):
        print \"foobar\"
但是如果不构建,修改然后写回sintax树就无法找到解决方案。     

要回复问题请先登录注册