python中的“type”命令给出了意外的结果

2024-03-29 08:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 对象代码命令false类型objectsqlalchemysession
1条回答
网友
1楼 · 发布于 2024-03-29 08:33:00

您的s实际上是sqlalchemy.orm.session.Session子类的实例。这个子类也被混淆地命名为sqlalchemy.orm.session.Session。你知道吗

查看SQLAlchemy源代码,这个对象很可能是由一个sqlalchemy.orm.session.sessionmaker生成的,这个Sessioncreates a subclass原因我不太清楚。我不知道这个行为是否被记录在案;快速查看文档时,我没有发现任何关于它的提及。你知道吗

相关问题 更多 >