python中的“type”命令会产生意外结果

时间:2016-06-09 23:10:29

标签: 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

1 个答案:

答案 0 :(得分:2)

您的s实际上是sqlalchemy.orm.session.Session的子类的实例。子类也很容易被命名为sqlalchemy.orm.session.Session

查看SQLAlchemy源代码,似乎这个对象是由sqlalchemy.orm.session.sessionmaker生成的Session InteractsWithPages ->storeInput('roles', 5); ,原因我并不完全清楚。我不知道这种行为是否有记录;我很快就在文档中找不到它。