Python 测试对象来自哪个模块,而不是对象的类型

Python 测试对象来自哪个模块,而不是对象的类型,python,instance,Python,Instance,使用isinstance我们可以检查某个对象是否属于某个类型,但是我们如何测试某个对象是否属于某个模块的类 例如: >>> type(root) <class 'bs4.BeautifulSoup'> >>> isinstance(root, BeautifulSoup) True >类型(根) >>>isinstance(根,美化组) 真的 如何测试此对象是否“属于”bs4包 注意:当我递归地检查soup中的对象时,它以bs4.Beauti

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

例如:

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

>>> isinstance(root, BeautifulSoup)
True
>类型(根)
>>>isinstance(根,美化组)
真的
如何测试此对象是否“属于”bs4包


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

如果我理解正确,您需要了解对象的模块。对吗?如果是这样,您将需要检查对象的
\uuuu模块\uuu
属性:

>>> 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'
>soup=BeautifulSoup('一句粗体的话')
>>>标签=汤
>>>标记。标记对象的模块
“bs4.element”

Nice,但我想检查它的实例(因此在本例中,
root.\uuu模块\uu
)。谢谢,就是这个@PascalvKooten So
root.\uuuu模块\uuuuu
是您要找的吗?还是我仍然误解了你?事实上,
\uuuuuu模块
就是答案。我现在可以使用
root.\uuu模块\uu
来测试
root
是否是源于
bs4
模块的对象。@PascalvKooten感谢您的确认。完美的我很高兴这对您有效。主要原因是,当我在汤中循环对象时,有时会得到
bs4.element.Tag
,因此我无法在函数中测试对象是否为BeautifulSoup对象,但我必须检查模块。