Python 019 六星級別之反射方法

2022-05-30 23:00:08 字數 1691 閱讀 6314

1)神賜給你的內建函式 :

a: getattr(命名空間,'函式名') == 命名空間.屬性名; 

這裡的命名空間指的是物件或者類;

b: getattr四個應用場景:

1)類名.名字 <==> getattr(類名,'名字')

2)物件名.名字 <==> getattr(物件名,'名字')

3)模組名.名字 <==> getattr(模組名,'名字')

4)自己檔名.名字 <==> getattr(自己檔名,'名字')

c:getattr的天命圈

**getattr(命名空間,'函式名',預設值引數)這個預設值引數就很強大,getattr會先找指定成員,如果存在

則返回成員引用,否則返回預設值引數;但是你如果不傳預設值引數,如果找不到會報錯(它與hasttr異常處理的區別見下邊解釋)

所以總結來說,getattr就是把你用小數點呼叫的方式轉換為getattr(命名空間,『靜態變數名/動態變數名)

2)hasattr():

a:功能指定物件中是否含有指定成員,有則返回true,否則返回false;

b:格式:hasattr(指定物件空間,變數名)

c:異常處理時與hasattr的區別:

imp = input('

>>>:')

imp_module = __import__

(imp)

while 1:

fun_name = input('

>>>:

')

func = getattr(imp_module,fun_name,true) #

如果找不到,則返回預設引數

if func == true: #

對找不到的情況處理

print('

重新輸入!')

continue

else

: a =func()

print

(a)imp = input('

>>>:')

imp_module = __import__

(imp)

while 1:

fun_name = input('

>>>:')

ret = hasattr(imp_module, fun_name) #

檢視指定物件裡的情況,如果沒有返回false

if ret == true: #

對找不到的情況處理

func =getattr(imp_module,fun_name)

a =func()

print

(len(a))

else

:

print('

重新輸入!')

continue

第一段程式是利用預設值  第二段是利用hasattr(後者是對指定物件空間處理,比較精準)

3)setattr():

a: 功能:給指定物件新增指定成員

b:格式:setattr(物件空間,要改的變數名,新值)

4)delattr()

a:功能刪除指定物件中的指定成員

b:格式delattr(物件空間,變數名)

python迴圈繪製六角星 python繪製五角星

下面呈上小 import turtle 匯入turtle庫包 turtle.fillcolor red 填充顏色 turtle.begin fill 開始畫,類似起筆 count 1 計時器,用於計錄次數 while count 5 控制繪製次數 turtle.forward 100 畫筆繪製的方向...

019 Python與使用者互動

目錄大家知道一門語言或者說電子硬體裝置都應該有輸入和輸出的部分 python控制台輸出使用的是print 那麼輸入呢?name input 請輸入你的姓名 print name print type name 輸出資訊 請輸入你的姓名 xucheng name age input 請輸入你的年齡 p...

019 Python變數記憶體管理

目錄 三 小整數池 x 10當我們在p1.py中定義乙個變數x 10,那麼計算機把這個變數值10存放在 呢了?我們回顧計算機的三大核心元件為 cpu 記憶體和硬碟。一定不是cpu,那是存放在記憶體還是硬碟中了呢?我們再回顧變數執行的三個過程,如果我們沒有使用python直譯器執行p1.py這個檔案,...