2014-12-07 31 views
2

使用isinstance我們可以檢查某些東西是否屬於某種類型,但我們如何測試某個對象是否屬於某個模塊的類?測試對象來自哪個模塊而不是哪種類型

實施例:

>>> type(root) 
<class 'bs4.BeautifulSoup'> 

>>> isinstance(root, BeautifulSoup) 
True 

如何測試此對象是否 「屬於」 的BS4包?

注意:當我遞歸地瀏覽湯中的對象時,它將以bs4.BeautifulSoup對象開始,但在另一個層次上它們是bs4.element.Tag節點。這就是爲什麼我要檢查源自該模塊而不是特定類型的原因。

回答

2

如果我理解正確,你想知道模塊的一個對象。那是對的嗎?如果是這樣,你將要檢查的對象的__module__屬性:

>>> from bs4 import BeautifulSoup 
>>> BeautifulSoup.__module__  # module of BeautifulSoup 
'bs4' 

>>> import requests 
>>> r = requests.get('http://www.google.com') 
>>> soup = BeautifulSoup(r.content) 
>>> soup.__module__    # module of a BeautifulSoup object 
'bs4' 

在您的評論來看,你可能是這樣的後:

>>> soup = BeautifulSoup('<b class="boldest">A bold statement.</b>') 
>>> tag = soup.b 
>>> tag.__module__    # module of a Tag object 
'bs4.element' 
+0

不錯,但我要檢查它的實例(所以在這種情況下,'root .__ module__')。謝謝,這就是它! – PascalVKooten 2014-12-07 15:52:16

+0

@PascalvKooten所以'root .__ module__'是你在找什麼?還是我仍然誤解你? – 2014-12-07 15:59:41

+0

的確,'__module__'就是答案。我現在可以使用'root .__ module__'來測試'root'是否是來自'bs4'模塊的對象。 – PascalVKooten 2014-12-07 16:01:24

相關問題