在python中,有時調用者僅知道類名和類方法,不負責實際的函數調用,而是將要調用的類名和類方法告訴一個中間函數,由中間函數負責實際調用函數。中間函數需以被告知的字符串調用類和類方法。 在萬物皆對象,我們需要將傳進來的字符串轉化為類對象,這里我們可以使用eval實現。而以字符串形式調用類方法,可以使用內置方法getattr實現,以下是詳細例子。
class SayHello(): def say(self): print 'hello' if __name__ == '__main__': # normal call class method i_s_h = SayHello() i_s_h.say() # use string call class method c_str = eval('SayHello')() print c_str c_str.say() # direct use class method getattr(c_str,'say')()
以上輸出:
hello
<__main__.SayHello instance at 0x0000000002242848>
hello
hello
[Finished in 0.3s]