我在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
生成的,这个Session
的creates a subclass原因我不太清楚。我不知道这个行为是否被记录在案;快速查看文档时,我没有发现任何关于它的提及。你知道吗相关问题 更多 >
编程相关推荐