python - python 中的 "type"命令给出了意外结果

标签 python sqlalchemy

我在 Python 解释器中运行了以下代码:

>>> s
<sqlalchemy.orm.session.Session object at 0x7f4fc8d69e10>
>>> type(s)
<class 'sqlalchemy.orm.session.Session'>
>>> type(s) == sqlalchemy.orm.session.Session
False

(1) 为什么解释器说 s 的类型不是 sqlalchemy.orm.session.Session,而它只是说它是?

(2) 如果 type 命令不起作用,判断对象是否为 Session 对象的最佳方法是什么? (我试图在断言中使用它来验证函数的输入)

(3) 只是为了好玩,我尝试使用原始类型来执行此操作,并且它有效。为什么这里的整数不同?

>>> type(3)
<type 'int'>
>>> type(3) == int
True

最佳答案

您的s实际上是sqlalchemy.orm.session.Session子类的实例。该子类也被命名为sqlalchemy.orm.session.Session,这令人困惑。

查看 SQLAlchemy 源代码,该对象似乎是由 sqlalchemy.orm.session.sessionmaker 生成的,creates a subclass Session 的原因我不太清楚。我不知道这种行为是否有记录;我快速浏览了一下,没有在文档中发现任何提及它的内容。

关于python - python 中的 "type"命令给出了意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737607/

相关文章:

python - 在python中同时读取两个列表中的输入

python - PostgreSQL - 你如何获得列格式?

python - 我们可以使用不同的数据库来运行 pytest 吗?

python - SQL Alchemy 在 before_update 上获取脏更新列

用于识别包含在三引号中的有效 Python 字符串的 Javascript flavor 正则表达式

python - 使用 python 和 sqlite3 时出错

python - 如何告诉 distutils 使用 gcc?

python - Sqlalchemy 中的复合键

python - 来自原始 SQL 插入的 sqlalchemy PK

python - SQLAlchemy:条件自动增量