测试对象来自哪个模块而不是它是哪种类型

时间:2014-12-07 15:45:36

标签: python instance

使用isinstance,我们可以检查某些东西是否属于某种类型,但我们如何测试对象是否属于某个模块?

示例:

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

>>> isinstance(root, BeautifulSoup)
True

如何测试此对象是否属于&#34;到bs4包?

注意:当我以递归方式查看汤中的对象时,它以bs4.BeautifulSoup对象的形式开始,但在另一个级别,它们是bs4.element.Tag个节点。这就是为什么我要检查源于此模块而不是特定类型的原因。

1 个答案:

答案 0 :(得分: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'