python的自省機制

2021-09-29 07:50:01 字數 2166 閱讀 4713

(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...