我想在python中爲外部模塊編寫包裝器。該模塊提供了一種方法來共軛預期2個參數的動詞。我想將它包裝成幾種方法,我想知道是否有方法以編程方式進行。如何動態克隆類方法,但能夠在Python中區分它們
即代替:
class X:
def a(self,arg):
return module.do(arg,'a')
def b(self,arg):
return module.do(arg,'b')
...
def z(self,arg):
return module.do(arg,'z')
我試圖做的事:
class X:
def a(self,arg):
return module.do(arg,__name__)
return module.do(arg,__name__)
def __init__(self):
setattr(self,'b',self.a)
...
setattr(self,'z',self.a)
x = X()
x.a(y)
x.b(y)
x.z(y)
的問題是,名返回前水平的方法,而不是當前。 我都嘗試:
from inspect import stack
stack()[0][3]
import sys
sys._getframe().f_code.co_name
但是當我打電話B()或Z()我得到 'A'。 我做錯了什麼?有沒有其他方法可以達到類似的結果?
爲什麼不只是包裝「做」的一項新功能,需要一個字符串參數? – katrielalex 2011-06-05 17:49:59