我在 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/