我希望在Python中使用某个函数exec后执行某些操作,但我无法更改或调用该函数。有一些想法吗?
例如:
class Target(object):
def __init__(self):
self.__id = 123
def fun(self):
print "called by target %d" % self.__id
我希望在“有趣”运行后打印一些内容,但我无法更改或调用类目标
答案 0 :(得分:1)
也许你可以用包装器方法替换原始方法:
t = Target()
old_fun = t.fun
def new_fun():
old_fun()
print "even more fun"
t.fun = new_fun
t.fun()
打印:
目标123鸣叫 更有趣
请注意,这不会更改类,只会更改实例。
答案 1 :(得分:0)
class MyTarget(Target):
def fun(self):
super(MyTarget, self).fun()
# your custom post processing
编辑:由于控制对象创建不是一种选择,您可以考虑使用Mr. Steak的答案。如果您希望后期处理影响Target
的所有实例,您可以使用以下内容:
Target.old_fun = Target.fun
def new_fun(self):
self.old_fun()
# custom post-processing
Target.fun = new_fun