Introspection in Python How to spy on your Python objects Guide to Python introspection
什么是自省?
在日常生活中,自省(introspection)是一種自我檢查行為。
在計算機(jī)編程中,自省是指這種能力:檢查某些事物以確定它是什么、它知道什么以及它能做什么。自省向程序員提供了極大的靈活性和控制力。
說的更簡單直白一點(diǎn):自省就是面向?qū)ο蟮恼Z言所寫的程序在運(yùn)行時,能夠知道對象的類型。簡單一句就是,運(yùn)行時能夠獲知對象的類型。
例如python, buby, object-C, c++都有自省的能力,這里面的c++的自省的能力最弱,只能夠知道是什么類型,而像python可以知道是什么類型,還有什么屬性。
?
最好的理解自省就是通過例子:?Type introspection? 這里是各種編程語言中自省(introspection)的例子(這個鏈接里的例子很重要,也許你很難通過敘述理解什么是introspection,但是通過這些例子,一下子你就可以理解了)
?
回到Python,Python中比較常見的自省(introspection)機(jī)制(函數(shù)用法)有: dir(),type(), hasattr(), isinstance(),通過這些函數(shù),我們能夠在程序運(yùn)行時得知對象的類型,判斷對象是否存在某個屬性,訪問對象的屬性。
?
dir()
dir() 函數(shù)可能是 Python 自省機(jī)制中最著名的部分了。它返回傳遞給它的任何對象的屬性名稱經(jīng)過排序的列表。如果不指定對象,則 dir() 返回當(dāng)前作用域中的名稱。讓我們將 dir() 函數(shù)應(yīng)用于 keyword 模塊,并觀察它揭示了什么:
>>> import keyword >>> dir(keyword) ['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'iskeyword', 'kwlist', 'main']
type()
type() 函數(shù)有助于我們確定對象是字符串還是整數(shù),或是其它類型的對象。它通過返回類型對象來做到這一點(diǎn),可以將這個類型對象與 types 模塊中定義的類型相比較:
? hasattr()
對象擁有屬性,并且?dir()?函數(shù)會返回這些屬性的列表。但是,有時我們只想測試一個或多個屬性是否存在。如果對象具有我們正在考慮的屬性,那么通常希望只檢索該屬性。這個任務(wù)可以由 hasattr() 和 getattr() 函數(shù)來完成.
>>> hasattr(id, '__doc__') True?
isinstance()?
可以使用 isinstance() 函數(shù)測試對象,以確定它是否是某個特定類型或定制類的實(shí)例:
轉(zhuǎn)載于:https://www.cnblogs.com/yuanjiangw/p/9767663.html
總結(jié)
以上是生活随笔為你收集整理的Introspection in Python How to spy on your Python objects Guide to Python introspection的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决-bash: make: comma
- 下一篇: python学习04