[轉載] python通過反射執行程式碼
場景:python2.7沒有@註解 用於實現介面卡模式,不能再方法執行前後維護一些全域性變數。所以用反射的思路來統一呼叫一個方法來執行其他的函式。
比如以下例子是為了維護一個長期使用的mysql連線,以此減少mysql的訪問壓力。在每次執行其他方法的時候呼叫
self.conn = conn_app_db.check_conn(self.conn),以此來維護連線,或者產生新連線(通過conn.ping方法判斷是否連線斷開)。
class upload_article(object):
def __init__(self):
self.conn = conn_app_db.check_conn(None)
def query_one_artice(self,a):
try:
print self.conn
sql = "select md5_url,title,author,content from article_url_log limit 1"
cursor = self.conn.cursor()
cursor.execute(sql)
result = cursor.fetchall()
if result is None:
return None
else:
return result
cursor.close()
except Exception,e:
print e
def excute_function(self,fn_name,param):
#這個用於檢查連線是否可用
self.conn = conn_app_db.check_conn(self.conn)
print "conn is healthy"
print "start to excute function "+fn_name
result = getattr(self, fn_name, None)(param)
return result
總結:getattr可以通過名字返回物件的屬性和函式,最後通過代入引數執行函式。
相關文章
- 反射-通過反射執行配置檔案內容反射
- [轉載]ubuntu中執行python指令碼UbuntuPython指令碼
- 通過Python指令碼理解系統執行緒薦Python指令碼執行緒
- 通過 Redis 定時執行指令碼Redis指令碼
- python兩個子執行緒通過queue通訊Python執行緒
- 反射-通過反射越過泛型檢查反射泛型
- 通過 HelloWorld 瞭解 Java 程式執行過程以及執行時記憶體Java記憶體
- c#通過反射動態執行類的例項及靜態方法C#反射
- GraalVM 21.0提供執行Java程式碼的第三種方式:Espresso通過Truffle框架執行Java程式碼 - graalvmLVMJavaEspresso框架
- 程式碼精簡執行過程
- ELF PHP 可執行程式執行後載入重型指令碼的過程PHP行程指令碼
- Python通過代理多執行緒抓取圖片Python執行緒
- 通過RFT命令列執行測試指令碼命令列指令碼
- shell指令碼命令 執行python檔案&python命令列執行python程式碼指令碼Python命令列
- Python 計算程式執行多久程式碼Python
- 通過Python掃描程式碼關鍵字並進行預警Python
- 通過shell指令碼監控sql執行頻率指令碼SQL
- 通過Linux crontab 定期執行Oracle Procedure 指令碼LinuxOracle指令碼
- iOS Jailbreak Principles - Undecimus 分析(三)通過 IOTrap 實現核心任意程式碼執行iOSAI
- 通過pl/sql計算程式的執行時間SQL
- Nginx通過內建的Perl模組執行Perl程式Nginx
- 用GPU來執行Python程式碼GPUPython
- 程式通訊 執行緒通訊執行緒
- 執行緒-集合-反射執行緒反射
- 轉載]遠端執行程式碼的利用行程
- https多執行緒下載程式碼HTTP執行緒
- 通過spid,查詢執行慢的sql指令碼SQL指令碼
- 通過行為引數化傳遞程式碼
- 通過一行程式碼學習javascript行程JavaScript
- .net 程式通過 crontab 無法啟動,手動執行指令碼可以啟動指令碼
- 執行緒通訊初探 (轉)執行緒
- [譯]通過HTTPS協議執行你的Flask程式HTTP協議Flask
- PHP通過lock控制程式只執行一次PHP
- 讓 Python 程式碼執行更快的技巧Python
- 如何用iPad執行Python程式碼?iPadPython
- 20 行 Python 程式碼實現加密通訊Python加密
- 反射-通過反射獲取私有構造方法並使用反射構造方法
- 反射-通過反射獲取成員變數並使用反射變數