(1)自省
自省就是物件導向的語言所寫的程式在執行時,能夠知道物件的型別。
簡單一句就是,執行時能夠獲知物件的型別。
(2)自省機制
自省機制通過函式實現,是乙個函式。
例如python, buby, object-c, c++都有自省的能力,這裡面的c++的自省的能力最弱,只能夠知道是什麼型別,而像python可以知道是什麼型別,還有什麼屬性。
dir(),type(), hasattr(), isinstance()(1)dir()
dir() 函式可能是 python 自省機制中最著名的部分了。
它返回傳遞給它的任何物件的屬性名稱經過排序的列表。
如果不指定物件,則 dir() 返回當前作用域中的名稱。
讓我們將 dir() 函式應用於 keyword 模組,並觀察它揭示了什麼:
import csv
print
(dir
(csv)
)#輸出:
g:\pycharmprojects\gui_pro\venv\scripts\python.exe
g:/pycharmprojects/gui_pro/test/test.py
['dialect'
,'dictreader'
,'dictwriter'
,'error'
,'ordereddict'
,'quote_all'
,'quote_minimal'
,'quote_none'
,'quote_nonnumeric'
,'sniffer'
,'stringio'
,'_dialect'
,'__all__'
,'__builtins__'
,'__cached__'
,'__doc__'
,'__file__'
,'__loader__'
,'__name__'
,'__package__'
,'__spec__'
,'__version__'
,'excel'
,'excel_tab'
,'field_size_limit'
,'get_dialect'
,'list_dialects'
,'re'
,'reader'
,'register_dialect'
,'unix_dialect'
,'unregister_dialect'
,'writer'
]
(2)type()
type() 函式有助於我們確定物件是字串還是整數,或是其它型別的物件。
它通過返回型別物件來做到這一點,可以將這個型別物件與 types 模組中定義的型別相比較:
print
(type
(csv)
)print
(type(33
))#輸出:
<
class
'module'
>
<
class
'int'
>
(3)hasattr()
物件擁有屬性,並且 dir() 函式會返回這些屬性的列表。但是,有時我們只想測試乙個或多個屬性是否存在。如果物件具有我們正在考慮的屬性,那麼通常希望只檢索該屬性。這個任務可以由 hasattr() 和 getattr() 函式來完成.
print
(hasattr
(csv,
'__doc__'))
#輸出:
true
(4)isinstance()
可以使用 isinstance() 函式測試物件,以確定它是否是某個特定型別或定製類的例項:
isinstance
("python"
,str
)#輸出:
true
Python自省機制
什麼是自省?在日常生活中,自省 introspection 是一種自我檢查行為。在計算機程式設計中,自省是指這種能力 檢查某些事物以確定它是什麼 它知道什麼以及它能做什麼。自省向程式設計師提供了極大的靈活性和控制力。最好的理解自省就是通過例子 type introspection 這裡是各種程式語言...
Python的自省機制
什麼是自省?在日常生活中,自省 introspection 是一種自我檢查行為。在計算機程式設計中,自省是指這種能力 檢查某些事物以確定它是什麼 它知道什麼以及它能做什麼。自省向程式設計師提供了極大的靈活性和控制力。說的更簡單直白一點 自省就是物件導向的語言所寫的程式在執行時,能夠知道物件的型別。簡...
Python中的自省機制 dict
一 定義 自省就是通過一定的機制查詢到物件的內部結構 class person name user class student person def init self,school name self.school name school name if name main user studen...