国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【測(cè)試開(kāi)發(fā)】python系列教程:python反射

這篇具有很好參考價(jià)值的文章主要介紹了【測(cè)試開(kāi)發(fā)】python系列教程:python反射。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

這次我們分享python的反射


在java中大家都知道,java的反射的機(jī)制,其實(shí)在python中也是有反射機(jī)制的,我們看下如何 來(lái)用?

一、什么是反射?

程序可以訪問(wèn)、檢測(cè)和修改'本身狀態(tài)'或者行為的一種能力。大白話:其實(shí)就是通過(guò)字符串操作對(duì)象的數(shù)據(jù)和方法

二、反射的作用

正常使用對(duì)象中的方法是要通過(guò)變量名去調(diào)用的, 使用反射可以讓用戶,通過(guò)輸入字符串,調(diào)用對(duì)象中的數(shù)據(jù)或者方法。

三、python反射的四個(gè)方法

hasattr() 判斷對(duì)象是否含有字符串對(duì)應(yīng)的數(shù)據(jù)或者功能

getattr() 根據(jù)字符串獲取對(duì)應(yīng)的變量名或者函數(shù)名

setattr() 根據(jù)字符串給對(duì)象設(shè)置數(shù)據(jù) (名稱空間的名字)

delattr() 根據(jù)字符串刪除對(duì)象對(duì)應(yīng)的數(shù)據(jù) (名稱空間中的名字)

四、代碼演示

hasattr

結(jié)果:

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

getattr()

class Dog():
    name='123'
    def printagename(self):
        print('111')
# 1.獲取類中的值
print(getattr(Dog,'name'))
# 2.獲取類中的方法
print(getattr(Dog,'printagename'))
# 3.調(diào)用
a=Dog()
getattr(Dog,'printagename')(a)
# 4.獲取對(duì)象中的方法
print(getattr(a,'name'))

結(jié)果展示

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

setattr()

class Dog():
    name='123'
    def printagename(self):
        print('111')
# 1.獲取類中的值
print(getattr(Dog,'name'))
#2.通過(guò)反射修改
setattr(Dog,'name','addddd')
#3.獲取修改后結(jié)果
print(getattr(Dog,'name'))    

結(jié)果展示:

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

delattr()

class Dog():
    name='123'
    def printagename(self):
        print('111')
# 1.獲取類中的值
print(getattr(Dog,'name'))
#2.通過(guò)反射刪除
delattr(Dog,'name')
#3.獲取修改后結(jié)果
print(getattr(Dog,'name'))

結(jié)果展示

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

可以看到,在我們刪除后,就沒(méi)有這個(gè)屬性或者方法了。

來(lái)看一個(gè)小案例

考慮有這么一個(gè)場(chǎng)景:需要根據(jù)用戶輸入url的不同,
調(diào)用不同的函數(shù),實(shí)現(xiàn)不同的操作,
也就是一個(gè)WEB框架的url路由功能。
路由功能是web框架里的核心功能之一,例如Django的urls。

看下如何來(lái)實(shí)現(xiàn)

先來(lái)四個(gè)可以函數(shù),來(lái)模擬不通的地址的文件

def login():
   print("這是一個(gè)登陸頁(yè)面!")


def logout():
   print("這是一個(gè)退出頁(yè)面!")

def home():
   print("這是網(wǎng)站主頁(yè)面!")

來(lái)實(shí)現(xiàn)路由的分發(fā)

import url

def run():
   inp = input("請(qǐng)輸入您想訪問(wèn)頁(yè)面的url:  ").strip()
   if inp == "login":
      url.login()
   elif inp == "logout":
      url.logout()
   elif inp == "home":
      url.home()
   else:
      print("404")

if __name__ == '__main__':
    run()

執(zhí)行

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

這就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的url路由功能,根據(jù)不同的url,執(zhí)行不同的函數(shù),獲得不同的頁(yè)面。

然而,讓我們思考一個(gè)問(wèn)題,如果有成百上千個(gè)路徑函數(shù)呢(這很常見(jiàn))?難道在run模塊里寫上成百上千個(gè)elif?顯然這是不可能的!那么怎么辦?

可以通過(guò)反射來(lái)實(shí)現(xiàn)

import url

def run():
   inp = input("請(qǐng)輸入您想訪問(wèn)頁(yè)面的url:").strip()
   func = getattr(url, inp)
   func()

if __name__ == '__main__':
    run()

執(zhí)行驗(yàn)證

存在的url

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

不存在的url

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

如何改進(jìn)呢,其實(shí)很簡(jiǎn)單,我們分享過(guò)hasattr可以判斷,我們?cè)趫?zhí)行前做個(gè)判斷即可

訪問(wèn)存在的url

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

訪問(wèn)不存在的url

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

通過(guò)hasattr()的判斷,可以防止非法輸入導(dǎo)致的錯(cuò)誤,并將其統(tǒng)一定位到錯(cuò)誤頁(yè)面。

最后: 下方這份完整的軟件測(cè)試視頻學(xué)習(xí)教程已經(jīng)整理上傳完成,朋友們?nèi)绻枰梢宰孕忻赓M(fèi)領(lǐng)取【保證100%免費(fèi)】

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

這些資料,對(duì)于【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴上萬(wàn)個(gè)測(cè)試工程師們走過(guò)最艱難的路程,希望也能幫助到你!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-744429.html

python 反射調(diào)用函數(shù),職場(chǎng)日常,軟件測(cè)試,自動(dòng)化測(cè)試,單元測(cè)試,軟件測(cè)試,程序人生,自動(dòng)化測(cè)試,python,Powered by 金山文檔

到了這里,關(guān)于【測(cè)試開(kāi)發(fā)】python系列教程:python反射的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 安全測(cè)試國(guó)家標(biāo)準(zhǔn)解讀——函數(shù)調(diào)用安全、異常處理安全、指針安全

    安全測(cè)試國(guó)家標(biāo)準(zhǔn)解讀——函數(shù)調(diào)用安全、異常處理安全、指針安全

    下面的系列文章主要圍繞 《GB/T 38674—2020 信息安全技術(shù) 應(yīng)用軟件安全編程指南》 進(jìn)行講解,該標(biāo)準(zhǔn)是2020年4月28日,由國(guó)家市場(chǎng)監(jiān)督管理總局、國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)發(fā)布,2020年11月01日開(kāi)始實(shí)施。我們對(duì)該標(biāo)準(zhǔn)中一些常見(jiàn)的漏洞進(jìn)行了梳理,大家感興趣的話可以自己去下載

    2024年02月13日
    瀏覽(32)
  • 【vim 學(xué)習(xí)系列文章 19 -- 映射快捷鍵調(diào)用兩個(gè)函數(shù) A 和B】

    請(qǐng)閱讀 【嵌入式開(kāi)發(fā)學(xué)習(xí)必備專欄 之 Vim】 在 Vim 中,如果想通過(guò)按下 gcm 來(lái)調(diào)用兩個(gè)函數(shù),比如 FunctionA 和 FunctionB ,需要先定義這兩個(gè)函數(shù),然后創(chuàng)建一個(gè)映射。這個(gè)映射將會(huì)在被觸發(fā)時(shí)依次調(diào)用這兩個(gè)函數(shù)。 首先,確保 .vimrc 文件中包含了這兩個(gè)函數(shù)的定義,以及一個(gè)用

    2024年04月13日
    瀏覽(24)
  • OpenAI 開(kāi)發(fā)系列(四):掌握OpenAI API調(diào)用方法

    OpenAI 開(kāi)發(fā)系列(四):掌握OpenAI API調(diào)用方法

    全文共4000余字,預(yù)計(jì)閱讀時(shí)間約17~30分鐘 | 滿滿干貨(附代碼),建議收藏! 本文目標(biāo):明確獲取OpenAI API密鑰的流程,理解如何調(diào)用OpenAI的各類大模型,并了解其對(duì)應(yīng)的相關(guān)參數(shù) 代碼下載點(diǎn)這里 前提:擁有OpenAI賬戶,并可以魔法上網(wǎng),如果涉及賬戶或魔法上網(wǎng)問(wèn)題,可參考本

    2024年02月11日
    瀏覽(23)
  • 【W(wǎng)ordpress高級(jí)教程】WordPress模板基本文件和常見(jiàn)函數(shù)調(diào)用代碼

    【W(wǎng)ordpress高級(jí)教程】WordPress模板基本文件和常見(jiàn)函數(shù)調(diào)用代碼

    WordPress是使用PHP語(yǔ)言開(kāi)發(fā)的博客平臺(tái),用戶可以在支持PHP和MySQL數(shù)據(jù)庫(kù)的服務(wù)器上架設(shè)屬于自己的網(wǎng)站。也可以把 WordPress當(dāng)作一個(gè)內(nèi)容管理系統(tǒng)(CMS)來(lái)使用。 WordPress有許多第三方開(kāi)發(fā)的免費(fèi)模板,安裝方式簡(jiǎn)單易用。用戶可以在支持 PHP 和 MySQL數(shù)據(jù)庫(kù)的服務(wù)器上快速搭建自

    2024年02月02日
    瀏覽(20)
  • Python 調(diào)用自定義函數(shù)

    Python 調(diào)用自定義函數(shù)

    新手入坑。 通常我們需要把公共函數(shù)提出來(lái),作為公共資源調(diào)用。也避免了代碼的重復(fù)書寫。 比如我們?cè)陧?xiàng)目?jī)?nèi)創(chuàng)建我們的py腳本路徑如下: 在公共方法中定義方法: 在其他腳本中調(diào)用如下:

    2024年02月14日
    瀏覽(25)
  • python 函數(shù)調(diào)用

    一、函數(shù)的定義 首先語(yǔ)法格式: 二、函數(shù)的調(diào)用 1.求兩個(gè)整數(shù)的和: 運(yùn)行結(jié)果: 2.關(guān)鍵參數(shù) 關(guān)鍵參數(shù)指通過(guò)對(duì)形參賦值的方式傳遞參數(shù),避免了傳遞實(shí)參過(guò)程中,與定義函數(shù)的形參順序不一致的情況。 運(yùn)行結(jié)果: 3.默認(rèn)參數(shù) 在函數(shù)定義時(shí)參數(shù)列表中的某個(gè)形參有值,則這

    2024年02月14日
    瀏覽(15)
  • Scala反射調(diào)用object

    和反射class不同,反射class和java反射一樣,object是靜態(tài)代碼塊模式的單例,Scala 反射的核心是 scala.reflect.runtime.universe:代碼如下: object: ? 反射調(diào)用: 反射 Scala object 核心是通過(guò) staticModule 獲取 ModuleMirror:

    2024年02月11日
    瀏覽(17)
  • Java反射調(diào)用ashx

    Java反射調(diào)用ashx

    這篇文章卡了大概一周,一個(gè)是沒(méi)時(shí)間,只能帶娃加鍛煉間隙擠點(diǎn)時(shí)間,一個(gè)是碰到了問(wèn)題卡住了。本篇實(shí)現(xiàn)反射調(diào)用ashx實(shí)現(xiàn)類的基礎(chǔ)結(jié)構(gòu)。 首先申明ashx的接口,所有的ashx實(shí)現(xiàn)類繼承實(shí)現(xiàn)該接口的基類 然后實(shí)現(xiàn)第一個(gè)不需要會(huì)話的基類 然后實(shí)現(xiàn)主中間件中轉(zhuǎn)調(diào)用實(shí)現(xiàn)的

    2024年02月07日
    瀏覽(18)
  • Python 函數(shù)的定義與調(diào)用

    Python 函數(shù)的定義與調(diào)用

    ?作者簡(jiǎn)介:人工智能專業(yè)本科在讀,喜歡計(jì)算機(jī)與編程,寫博客記錄自己的學(xué)習(xí)歷程。 ??個(gè)人主頁(yè):小嗷犬的博客 ??個(gè)人信條:為天地立心,為生民立命,為往圣繼絕學(xué),為萬(wàn)世開(kāi)太平。 ??本文內(nèi)容:Python 函數(shù)的定義與調(diào)用 Python 中使用 def 語(yǔ)句創(chuàng)建函數(shù),其一般的格

    2024年01月25日
    瀏覽(26)
  • 【30天python從零到一】---第六天:函數(shù)、變量作用域、函數(shù)的鏈?zhǔn)秸{(diào)用和遞歸調(diào)用

    【30天python從零到一】---第六天:函數(shù)、變量作用域、函數(shù)的鏈?zhǔn)秸{(diào)用和遞歸調(diào)用

    ?? 博客主頁(yè):??@披星戴月的賈維斯 ?? 歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:?? Python專欄 ??請(qǐng)不要相信勝利就像山坡上的蒲公英一樣唾手可得,但是請(qǐng)相信,世界上總有一些美好值得我們?nèi)σ愿埃呐路凵硭楣牵?? ??一起加油,去追尋、去成為更好的自己

    2023年04月14日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包