python的函數反射,python 反射調用函數

Python中如果對基礎類型進行反射,比如int、float

動態語言里面的eval就是干這個用的

創新互聯是專業的陵川網站建設公司,陵川接單;提供成都網站設計、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行陵川網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

type1="int"

type2="str"

a=eval(type1+"(2222)") 這里a就是int型的2222 相當于執行a=eval("int(2222)")

b=eval(type2+("2222")) 這里b就是string型的"2222" 相當于執行b=eval("str(2222)")

另外Python偏函數特性也比較像這個,你可以搜索下看看。

Python自省與反射

這個也是python彪悍的特性.

自省就是面向對象的語言所寫的程序在運行時,所能知道對象的類型.簡單一句就是運行時能夠獲得對象的類型.比如type(),dir(),getattr(),hasattr(),isinstance().

反射機制就是在運行時,動態的確定對象的類型,并可以通過字符串調用對象屬性、方法、導入模塊,是一種基于字符串的事件驅動

通過源碼注釋我們知道,它返回對象是否具有指定名稱的屬性。而且它是通過調用getattr并捕獲AttributeError異常來判斷的。就像上面的屬性調用,我們就可以使用hasattr(a, "test")來判斷,通過源碼注釋我們也可以思考一下,eval這種是不是也可以實現這種方法呢?

但是這種方式是有缺陷的,因為test輸出了兩次,因為我們調用了兩次test(),這跟我們想要的效果不一樣。如果用hasattr呢,這個函數就不會在判斷的時候調用一次了。

有了判斷屬性是否存在的函數,那么就得有獲取屬性的函數了.

從源碼注釋我們就能知道獲取object對象的名為name的屬性,想到與object.name,如果提供了default參數,那么當屬性不存在的時候,就會返回默認值。同樣是上面的例子:

從例子中我們可以看出,hasattr并沒有調用test函數,而且getattr獲取到的是函數對象,也沒有調用它,通過我們主動執行func()才執行了a.test()函數,這樣相比于exec和eval就靈活了許多。

判斷和獲取屬性有了,那么設置屬性也是需要的.

動態加載模塊,python反射機制

動態加載模塊用的模塊importlib 里面的import_module(“字符串模塊路徑”, 相對路徑包名)

2.getattr(對象,“字符串屬性”,默認值)

補充

任意創建一個文件夾,在里面同級創建f1-f4.py的四個文件。

內容如下:

f1.py

f2.py

f3.py

f4.py

f5.py

f4.py:通過動態導入模塊,動態添加屬性 刪除。可以解決接口自動化中的動態傳參

F5.py: 通過傳參的方式,去獲取類的實例方法,可以做到不知道需要哪個方法的時候,用字符串的方法去調用需要的方法。接口自動化中參數化的時候可以用到。

反射機制,當通過類名去反射得到的實例方法,需要傳類名進去。通過self或者對象得到的實例方法,不需要傳self或者類名。如果是實例對象或者類 去調用靜態方法, 都不用給函數傳self cls

Python中的單例模式與反彈機制

一。單例模式

一般情況下,類可以生成任意個實例,而單例模式只生成一個實例

我們先用單例模式設計一個Rectangle類

然后用__new__方法設計單例模式,代碼如下

然后我們來驗證下,單例模式下是否只能生成一個實例

單例模式在程序設計中比較典型的應用場景:多個用戶同時調用某個模塊時,會生成一些日志,我們希望這些日志存在同一個文件內,而不是多個文件。

在生成日志模塊我們就可以采用單例模式進行設計。

二。反射

概念:簡單來說就是可以利用字符串來映射模塊中的相應方法然后可以操作模塊中相應的方法

我們以一個飯店點菜的實際場景來理解Python的反射機制

hasatter(對象,屬性或方法名)

判斷對象中是否有某個屬性或某個方法,返回值是布爾型

getattr(對象,屬性或方法名,缺省值) 判斷對象中是否有某個屬性或某個方法,如果有返回方法本身,沒有則返回缺省值

setattr(對象,屬性,新值)

將實例的屬性改為新的值,如果屬性不存在則新建

我們給實例guke1加個價格屬性

標題名稱:python的函數反射,python 反射調用函數
分享網址:http://www.kartarina.com/article24/hdpgje.html

成都網站建設公司_創新互聯,為您提供關鍵詞優化企業建站服務器托管網站內鏈ChatGPT域名注冊

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網頁設計公司
主站蜘蛛池模板: 无码人妻一区二区三区在线水卜樱 | 中文字幕在线无码一区二区三区| 久久亚洲精品中文字幕无码| 无码av高潮喷水无码专区线| 精品无码久久久久久久久 | 亚洲中文无码线在线观看| 国产成年无码久久久久下载| 亚洲色无码一区二区三区| 亚洲人成无码网站久久99热国产| 精品无码无人网站免费视频| 熟妇人妻系列aⅴ无码专区友真希| 无码囯产精品一区二区免费| 国产AV无码专区亚汌A√| 亚洲高清无码专区视频| 综合无码一区二区三区四区五区| 黄桃AV无码免费一区二区三区| 无码乱码av天堂一区二区| 伊人久久精品无码av一区| 亚洲啪啪AV无码片| 粉嫩大学生无套内射无码卡视频 | gogo少妇无码肉肉视频| 无码丰满熟妇浪潮一区二区AV| 亚洲大尺度无码无码专区| 午夜无码一区二区三区在线观看| 亚洲中文字幕无码中文字| 无码人妻精品中文字幕免费东京热| 国产精品热久久无码av| 日韩精品无码成人专区| 国产精品亚洲а∨无码播放麻豆| 婷婷四虎东京热无码群交双飞视频 | 伊人久久无码中文字幕| 精品无码综合一区| 国产精品无码DVD在线观看| 熟妇人妻无码中文字幕老熟妇| 国产成人无码精品一区不卡| 成人免费无码大片A毛片抽搐 | 色欲aⅴ亚洲情无码AV蜜桃| 伊人久久大香线蕉无码| 国产怡春院无码一区二区| 亚洲av无码成人精品区一本二本| 少妇久久久久久人妻无码|