我實例化一個A類(這我從別人 其他進口,所以我不能修改)到類X.的Python:有前置和後置方法
包裝方法調用是否有辦法我可以攔截或打包對A中方法的調用? 即,在下面的代碼,我可以叫
x.a.p1()
,並得到輸出
X.pre
A.p1
X.post
許多TIA!
class A:
# in my real application, this is an imported class
# that I cannot modify
def p1(self): print 'A.p1'
class X:
def __init__(self):
self.a=A()
def pre(self): print 'X.pre'
def post(self): print 'X.post'
x=X()
x.a.p1()
是真的,但我想避免因爲我真正的程序包含比我想包裝更多的類實例。 – 2008-11-03 08:41:19
那麼,調用包裝相同,但把它放在你自己的命名空間。它將有效地作爲一個插入式替代品,並且你不需要改變你的代碼。 – Tomalak 2008-11-03 08:51:06