Python反射(自省)机制
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Python反射(自省)机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                一、動態導入模塊。
介紹反射機制之前我們先來看看什么是動態導入模塊。這時候,有一個需求,那就是我們不知道用戶要導入哪一個模塊,這時候我們應該如何設計一個程序滿足去導入用戶輸入的模塊呢?
假設我們現在有一個模塊test(同級目錄)
def printA():print('AAAA') def printB():print('BBBB')這時候我們可以在外部用__ import__實現動態導入。
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' imp=input('請輸入要導入的模塊名') m=__import__(imp) m.printA()上面就已經實現了動態導入模塊了。比如直接輸入,test即可。但是如果test模塊和我們現在的程序不在同一級目錄呢。我們應該怎么導入?
假設test在,同級目錄aaa下。
m= __import__("aaa.test") #這樣僅僅導入了aaa模塊,調用函數的方法是aaa.test.printA()m = __import__("aaa.test",fromlist = True) #改用這種方式就能導入成功 調用方法:test.printA()二、反射機制
其實上面的代碼仔細一看,實際上是完全沒有意義的。因為當我們不知道要導入哪一個模塊的時候我們,根本不知道該去調用那個函數,所有實現動態調用函數也是很有必要的。這時候就該反射機制上場了。
 1 hasattr(object, name).判斷object是否有name函數,有則返回True
 2、getattr(object, name,default).獲得一個‘name’的參數,不存在則返回default。不設置,不存在報錯
 3、setattr(object, name, value) 可以設置數據屬性也可以設置函數屬性。
總結
以上是生活随笔為你收集整理的Python反射(自省)机制的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 对python乱序字符串检查算法研究
- 下一篇: Python类的静态属性、类方法、静态方
