官方文件:
該inspect模組提供了一些有用的函式來幫助獲取有關活動物件的資訊,例如模組,類,方法,函式,回溯,框架物件和**物件。例如,它可以幫助您檢查類的內容,檢索方法的源**,提取和格式化函式的引數列表,或獲取顯示詳細回溯所需的所有資訊。
這個模組提供了四種主要的服務:型別檢查,獲取源**,檢查類和函式,以及檢查直譯器堆疊。
返回按名稱排序的(名稱,值)對列表中的物件的所有成員。如果提供了可選的謂詞引數,則僅包含謂詞返回true值的成員。
predicate 引數:ismodule,isclass,ismethod,isfunction,isbuiltin等,該引數是true才會返回匹配到的型別,可見最下方例子
注意:getmembers()當引數是乙個類時,它不返回元類屬性(此行為是從dir()函式繼承的)。
inspect.getmoduleinfo(path)
返回乙個值元組,描述python如何解釋路徑標識的檔案(如果它是模組),或者none它不會被識別為模組。返回元組,其中name是模組的名稱,沒有任何封裝包的名稱,字尾是檔名的尾部(可能不是點分隔的副檔名),mode是將使用的模式(或),module_type是給出模組型別的整數。 module_type將有乙個值,可以與中定義的常量進行比較(name, suffix, mode,module_type)open()』r」rb』imp模組; 有關模組型別的更多資訊,請參閱該模組的文件。
在2.6版中更改:返回乙個命名元組 。moduleinfo(name, suffix, mode, module_type)
返回由檔案路徑命名的模組的名稱,不包括封裝包的名稱。這使用與直譯器在搜尋模組時使用的演算法相同的演算法。如果根據直譯器的規則無法匹配名稱,none則返回。
如果物件是模組,則返回true。
如果物件是類,無論是內建的還是在python**中建立的,則返回true。
如果物件是用python編寫的繫結或未繫結方法,則返回true。
如果物件是python函式,則返回true,其中包括由lambda表示式建立的函式。
如果物件是python生成器函式,則返回true。
版本2.6中的新功能。
如果物件是生成器,則返回true。
版本2.6中的新功能。
如果物件是回溯,則返回true。
如果物件是框架,則返回true。
如果物件是**,則返回true。
如果物件是內建函式或繫結的內建方法,則返回true。
如果物件是使用者定義的函式或內建函式或方法,則返回true。
如果物件是抽象基類,則返回true。
版本2.6中的新功能。
如果物件是乙個方法描述符返回true,但如果ismethod(),isclass(),isfunction()或者isbuiltin() 是真實的。
這是python 2.2的新功能,例如,它是正確的 int.add。傳遞此測試的物件有乙個get()方法但不是set() 方法,但除此之外,屬性集也會有所不同。乙個name屬性通常是明智的,而且doc往往是。
通過也傳遞其他測試之一的描述符實現的方法從測試返回false ismethoddescriptor(),僅僅因為其他測試承諾更多 - 例如,im_func當物件通過時,您可以依靠具有 屬性(等)ismethod()。
如果物件是資料描述符,則返回true。
資料描述符既有aget又有set方法。示例是屬性(在python中定義),getsets和成員。後兩者在c中定義,並且有更多特定的測試可用於這些型別,這在python實現中是健壯的。典型地,資料描述符也將具有name與doc屬性(屬性,getsets,和成員同時具有這些屬性的),但是這不被保證。
版本2.3中的新功能。
如果物件是getset描述符,則返回true。
cpython實現細節: getsets是通過pygetsetdef結構在擴充套件模組中定義的屬性 。對於沒有這種型別的python實現,此方法將始終返回false。
2.5版中的新功能。
如果物件是成員描述符,則返回true。
cpython實現細節:成員描述符是擴充套件模組中通過pymemberdef結構定義的屬性 。對於沒有這種型別的python實現,此方法將始終返回false。
import inspect
class
a(object):
def__init__
(self):
pass
defdesktop_run
(self):
print("hello python")
class
b(object):
def__init__
(self,age):
self.age=age
defdesktop_stop
(self):
print("bye python")
class
c(a,b):
def__init__
(self):
a.__init__(self)
b.__init__(self,23)
self._desktop_dict={}
#獲取該類和其繼承的類的方法,inspect.ismethod用來判斷返回的屬性是否為物件方法
for f in inspect.getmembers(self,inspect.ismethod):
if f[0].find("desktop") == 0:
print("匹配到的物件方法資訊:",f)
self._desktop_dict[f[0]]=f[1]
if __name__ == '__main__':
c=c()
print(c._desktop_dict)
f=c._desktop_dict["desktop_run"] #f為物件方法
f()print("獲取物件c所在的模組(指令碼):",inspect.getmodule(c))
/users/wupeng/pycharmprojects/scrapyprojects/bin/python /users/wupeng/pycharmprojects/scrapyprojects/processing.py
匹配到的物件方法資訊: ('desktop_run', method a.desktop_run of
<__main__.c object at 0x1040b7438>>)
匹配到的物件方法資訊: ('desktop_stop', method b.desktop_stop of
<__main__.c object at 0x1040b7438>>)
hello python
獲取物件c所在的模組(指令碼): '__main__' from '/users/wupeng/pycharmprojects/scrapyprojects/processing.py'>
Chrome風險外掛程式自檢
這些惡意擴充套件被發現會收集螢幕截圖 裝置剪貼簿內容,使用者登陸 的瀏覽器 cookies,密碼等按鍵。絕大部分擴充套件都是模組化的,安裝之後可以用可執行檔案進行更新。按照如下步驟操作看看自己有沒有中招。1.在 chrome 中輸入 chrome extensions 開啟擴充套件程式頁面 2.在該...
佳能2900離線自檢 HP印表機離線自檢方法
hp雷射印表機如何在印表機面板上列印離線自檢頁 背景 在印表機使用過程中經常需要檢視印表機狀態,此時我們可以列印離線 自檢頁來 幫助我們判斷,下面列出了 hp 雷射印表機列印離線 自檢頁的 方法。控制面板其他操作請參考其他相關文件。注 以下操作均在印表機就緒時進行。列印方法 黑白雷射印表機 hp l...
電腦自檢報警聲解析
主機板開機有報警聲,說明自檢出了問題。報警聲是由主機板上的bios設定的。bios有兩種,分別為ami和award。大多數主機板都是採用award的bios。1 award的bios設定為 長聲不斷響 記憶體條未插緊。一短 系統正常啟動。兩短 cmos設定錯誤,需重新設定。一長一短 記憶體或主機板錯...