需求:
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了舒蘭免費建站歡迎大家使用!
因為最近在看python腳本腳本獲取oracle數(shù)據(jù)庫數(shù)據(jù)進(jìn)行oracle數(shù)據(jù)庫監(jiān)控,需要用到反射的方式做,去通過傳參調(diào)用不同函數(shù)去獲取不同的數(shù)據(jù)庫狀態(tài)(python2)
#!/usr/bin/python class Exucutsql(object): def status(self): print("active") def db(self): print("100M") class Main(Exucutsql): def __init__(self): pass def __call__(self): method = raw_input("please input your method:") if hasattr(self,method): func = getattr(self, method) func() else: print("input method is not exits") if __name__ == "__main__": Main()
說明:輸入相應(yīng)方法名會調(diào)用不用的方法
python類中的特殊方法
__call__() 方法會當(dāng)作一個函數(shù)去執(zhí)行
hasattr() 方法會判斷在類中是否存在方法
getattr() 方法會去調(diào)用執(zhí)行相應(yīng)的函數(shù)名方法(解決了過多的IF判斷的問題)