2013-04-22 32 views
2

我正在研究一個函數,我想知道一個對象是否爲re.MatchObject的實例。我試圖使用isinstance,但re.MatchObject是C類型,這是行不通的。Python:在基於C的類型上使用isinstance MatchObject

我仍然可以做一個替代測試,如hasattr(... , 'pos')或任何其他re.MatchObject屬性,但我不認爲這是一個很好的解決方案。 還有其他方法嗎?

+0

[MatchObject](http://docs.python.org/2/library/re.html#re.MatchObject)。真正的類型名稱是'_sre.SRE_Match' – ibi0tux 2013-04-22 08:55:40

+0

文檔討論're.MatchObject'時,如果're'中沒有'MatchObject'名稱,就像是一個doc錯誤。 – user4815162342 2013-04-22 09:58:54

回答

4

你需要使用正確的類型;匹配對象類型是沒有明確導入的,但您可以使用type()在現有的實例來存儲它:

import re 

MatchObject = type(re.search('', '')) 

然後使用在isinstance()測試:

>>> MatchObject = type(re.search('', '')) 
>>> isinstance(re.search('', ''), MatchObject) 
True 

沒有任何關於C-定義Python類型可防止在其他情況下使用isinstance()