2008年6月18日 星期三

動態改變 instance 的 member function

首先先建立一個 class:


class foo:
def say(self, s):
print 'Hello, %s' % (s)

f = foo()
f.say('Bob')

這樣會印出 'Hello, Bob'。
如果想把裡面的 say 換成自己定義的 function,可以先定義該 function:

def helloworld(self, s):
print 'Hello World %s' % (s)

然後再用 new.instancemethod 把它給換掉:

import new
f.say = new.instancemethod(helloworld, f, foo)
f.say('Alice')

這樣就會印出 'Hello Wolrd, Alice' 囉

0 意見: