确定对象的包

时间:2018-01-23 22:22:46

标签: python

有没有办法可靠地获取对象的包名?我试图以编程方式确定连接器是来自mysqldb,pyscopg2,cx_oracle还是pymssql。我以前一直在使用conn.__class__和正则表达式,但是当MySQLdb打破了这种模式时,我偶然发现了。

psycopg2:<type 'psycopg2.extensions.connection'>

oracle:<type 'cx_Oracle.Connection'>

pymssql:<type 'pymssql.Connection'>

mysqldb:MySQLdb.connections.Connection

我想知道是否有内置的python方法来查找课程&#39;包。理想情况下,这只会返回psycopg2cx_OraclepymssqlMySQLdb

是的,谢谢你,Get fully qualified class name of an object in Python是我搜索时出现的第一件事。 psycopg2,cx_oracle和pymssql都返回AttributeError: 'Connection' object has no attribute '__module___'

1 个答案:

答案 0 :(得分:0)

使用inspect.getmodule()

如果模块不合适,您可以在获得模块后检查模块的__package__

另一种选择是使用inspect.getfile()并搜索已知的字符串。