91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何通過實例了解反射機制

發布時間:2021-07-24 09:13:43 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關python如何通過實例了解反射機制,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、反射機制簡介:

  • 通過字符串的形式導入模塊

  • 通過字符串的形式,去模塊中尋找指定的函數,并執行

  • 規定用戶輸入格式 模塊名/函數名 通過__import__的形式導入模塊,并通過 hasattr和getattr 檢查并獲取函數返回值。

相關方法:

  • getattr:--根據字符串的形式去某個模塊中尋找東西

  • hasattr:--根據字符串的形式去某個模塊中判斷東西是否存在

  • setattr:--根據字符串的形式去某個模塊中設置東西

  • delattr:--根據字符串的形式去某個模塊中刪除東西

二、反射機制初識:

test.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def f1():
return '我是F1,我被調用了'

def f2():
return '我是F2,我被調用了'

def f3():
return '我是F3,我被調用了'

index.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
反射機制
1.根據字符串的形式導入模塊。
2.根據字符串的形式去對象(某個模塊)中操作其成員 
實現思路:規定用戶輸入格式 模塊名/函數名 通過__import__的形式導入模塊,并通過 hasattr和getattr 檢查并獲取函數返回值。
"""
#通過用戶輸入的形式, 導入模塊
inp = input('請輸入需要導入的模塊名:')
#__import__用于以字符串的形式導入模塊
dd = __import__(inp)
#在模塊尋找函數并執行函數
inp_func = input('請輸入需要執行的函數:')
#getattr()用于以字符串的形式去某個模塊中尋找函數
tager_func = getattr(dd, inp_func)
#在獲取到的函數名后加()表示執行函數
result = tager_func()
print(result)

代碼執行結果:

請輸入需要導入的模塊名:test
請輸入需要執行的函數:f2
我是F2,我被調用了

實例:基于反射模擬Web框架路由系統(一)

commons.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def login():
return 'login'

def logout():
return 'logout'

def nb():
return '很牛逼的網頁'

refec_demo.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
基于反射模擬web框架路由系統
"""
from lib import commons
url = input('請輸入模擬的url路徑:')
if url.endswith('login'):
ret = commons.login()
print(ret)
elif url.endswith('logout'):
ret = commons.logout()
print(ret)
else:
print('404')

實例:基于反射模擬Web框架路由系統(二)

refec_demo1.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from lib import commons

inp = input('請輸入模擬的url路徑:')
url_inp = inp.split('/')[-1]
if hasattr(commons, url_inp):
ret = getattr(commons, url_inp)
result = ret()
print(result)
else:
print('404')

代碼實現結果:

路徑正確時結果:

python如何通過實例了解反射機制

路徑不正確時結果:

python如何通過實例了解反射機制

實例:基于反射模擬Web框架路由系統(三)

manager.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def home():
return 'Home'

order.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
def add_order():
return '添加訂單'

refec_demo2.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#用戶輸入規則:模塊名/函數名

url = input('請輸入模塊名/函數名:')
target_modul, target_func = url.split('/')
#__import__導入模塊
mod = __import__('lib.' + target_modul, fromlist=True)
#hasattr()判斷函數是否存在
if hasattr(mod, target_func):
ret = getattr(mod, target_func)
result = ret()
print(result)
else:
print('404')

當模塊和函數都存在時,url路徑調用結果:

python如何通過實例了解反射機制

當模塊和函數都不存在時,url路徑調用結果:

python如何通過實例了解反射機制

關于“python如何通過實例了解反射機制”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

曲阳县| 罗江县| 博白县| 成武县| 陆丰市| 西峡县| 建始县| 砀山县| 河北省| 邵阳市| SHOW| 柳江县| 玉屏| 宁波市| 西林县| 育儿| 抚州市| 罗甸县| 栾城县| 金坛市| 开封市| 永福县| 澄迈县| 武山县| 财经| 西吉县| 越西县| 和顺县| 白朗县| 兴业县| 洞头县| 辽源市| 体育| 田林县| 抚松县| 神木县| 夏津县| 武山县| 获嘉县| 库尔勒市| 黄冈市|