如何动态重写类方法的代码?

时间:2013-09-07 20:04:52

标签: python dynamic code-generation

我正在尝试优化最初使用namedtuples编写的代码和修改它们的函数。 对于相同的namedtuple类型的各种值,每个函数都会被调用很多时间。

基本的例子是:

def modifyTuple(record):
  if record.field1 == True:
    record.field2 = "VALUE1"
  elif record.field3 == "SPECIAL":
    record.field2 = "VALUE2"

我正在经历的瓶颈分析,它表明每次调用函数时使用多个字典查找会导致时间浪费。我现在正在尝试使用检查和基本字符串替换来动态重写函数,基于简单列表和从字段名称到字段索引的映射。

def modifyTuple(record):
  if record[0] == True:
    record[1] = "VALUE1"
  elif record[2] == "SPECIAL":
    record[3] = "VALUE2"

生成并使用此代码(我有一个函数,在使用exec进行内部重新定义和编译之后返回修改后的转换函数)。它似乎工作得很好,但是当函数实际上是一个类方法时,我似乎找不到处理这种情况的方法,因此有一个互补的“自我”参数。

应如何处理?有什么想法吗?

0 个答案:

没有答案