我在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
答案 0 :(得分:2)
您的s
实际上是sqlalchemy.orm.session.Session
的子类的实例。子类也很容易被命名为sqlalchemy.orm.session.Session
。
查看SQLAlchemy源代码,似乎这个对象是由sqlalchemy.orm.session.sessionmaker
生成的Session
InteractsWithPages
->storeInput('roles', 5);
,原因我并不完全清楚。我不知道这种行为是否有记录;我很快就在文档中找不到它。