9 模組之五 反射

2022-08-11 15:42:16 字數 801 閱讀 3988

如果我們的**中需要通過判斷乙個字串來呼叫乙個函式的時候,可以用if ,else來進行操作,如果有100個函式呢,如果有1000個函式呢。

此時用反射的話就好說了。簡單的說就是利用字串的形式去物件(模組)中操作(尋找)成員

def login():

print('炫酷的登入頁面')

def logout():

print('炫酷的退出頁面')

def home():

print('炫酷的主頁面')

def run():

inp = input('請輸入要訪問的url')

if hasattr(note,inp):      #判斷note這個模組中有沒有以inp變數內容為名字的函式,如果你輸入login,就是判斷是否有login這個函式

func = getattr(note,inp)  #獲取這函式  

func()

else:

print('404')

if __name__ == '__main__':

run()

通過字串的形式匯入模組:

obj = __import__("commons")   #通過字串的形式匯入模組,並重命名為obj

這樣有個缺點,如果commons改成 commons.login的話,他預設只匯入commons

此時需要新增乙個引數:

fromlist=true, 整個匯入模組就變成了:

obj = __import__("commons",fromlist=true)

python之路(9)反射 包裝類 動態模組匯入

目錄 python提供自省的四個方法 hasattr object,name 判斷object中有沒有有個name字串對應對應的方法和屬性 class demo name chen age 22 def test func self print 存在 hasattr demo,test func t...

Python之模組詳細梳理 五

python包是一種特殊的資料夾,用來存放多個相互關聯的模組檔案和資源檔案,該資料夾下必須有 init py檔案。python首次匯入包時會自動執行 init py檔案。若沒有這個檔案會被視為資料夾,有這個檔案才會被視為包。資料夾jihe下有3個檔案,內容如下 init py檔案 from jihe...

Python常用模組之五 subprocess

python引入subprocess模組來管理子程序,以取代一些舊模組的方法 如 os.system os.spawn os.popen popen2.commands.不但可以呼叫外部的命令作為子程序,而且可以連線到子程序的input output error管道,獲取相關的返回資訊。subpro...