溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • python 知識點:反射 之 getattr()實現以字符串形式導入模塊和執行函數

python 知識點:反射 之 getattr()實現以字符串形式導入模塊和執行函數

發布時間:2020-07-21 15:06:03 來源:網絡 閱讀:523 作者:TtrToby 欄目:數據庫
# -*- coding: utf-8 -*-
#知識點:反射
#通過字符串的形式去導入模塊,這就是反射
#并以字符串的形式執行函數

#先看簡單的小粒子
temp = 'mysql' #這個字符串是模塊的名字(也就是mysql.py或sqlserver.py,后綴名不用寫)
func = 'count' #這個字符串是函數的名字(也就是mysql.py/sqlserver.py中的函數count)
model = __import__(temp)    #以字符串的形式導入模塊

#執行模塊中的函數第一種方法
print model.count() 

#執行模塊中的函數第二種方法
Function = getattr(model,func) #以字符串的形式執行函數
print Function()


#下面模擬一個數據庫連接的小粒子
#準備以下兩個文件

'''
mysql.py文件模擬連接mysql數據庫,連接正常返回1
# -*- coding: utf-8 -*-
def count():
    return 1

sqlserver.py文件模擬連接sqlserver數據庫,連接正常返回2
# -*- coding: utf-8 -*-
def count():
    return 2

'''
#注意:mysql.py和sqlserver.py兩個文件自行定義即可,這里近用于模擬作用
#并非是實際連接數據庫的語句

def db_count(db_name):
    temp = db_name #模塊的名字(也就是mysql或sqlserver)
    func = 'count' #函數的名字(也就是mysql.py/sqlserver.py中的函數count)
    model = __import__(temp)
    Function = getattr(model,func) #以字符串的形式執行函數
    return Function()

#目前模擬的是默認連接sqlserver數據庫
status = db_count('sqlserver')

#檢查連接sqlserver的狀態(正常狀態為:2),如果不能連接,則切換連接到mysql
if status != 2:
    status = db_count('mysql')
    print '已切換為mysql,連接ID:%d' % status
else:
    print 'sqlserver連接正常,連接ID:%d' % status

#測試動作:
#1、可將sqlserver.py中的count返回值修改成3


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女