是否可以使用代码动态填充Python方法?

时间:2013-08-02 06:36:46

标签: python reflection introspection

我有许多方法具有以下格式:

def p_methodone(a):
    pass

def p_methodtwo(a):
    pass

...

我想删除pass并使用代码a[0] = a[1]填充这些方法。是否可以使用像反射之类的东西动态地在Python中执行此操作?原因是我有这些方法的很多,而代码a[0] = a[1]可能会在以后改变 - 不得不在一个地方改变它(而不是做搜索和替换)。

(注意:我无法以任何方式改变这些定义,因为外部库依赖于它们采用这种格式。)

2 个答案:

答案 0 :(得分:1)

改为使用lambdas!

y = lambda a: a[0] = a[1]
y([1, 2, 3])

答案 1 :(得分:0)

您可以使用lambda函数或其他函数

覆盖函数定义
>>> def newdef(a): return a+1
... 
>>> p_methodone = newdef
>>> p_methodone(10)
11

>>> def newdef(a): return a+2
... 
>>> p_methodone = newdef
>>> p_methodone(10)
12