在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]
