python - 为什么使用 importlib.util 会破坏类型比较?
问题描述
我有一个some_module
带有文件 ( ) 的模块 ( somefile
),其中包含我要实例化的对象 ( foo
)。
from collections import namedtuple
foo = namedtuple('Foo', ['a', 'b'])
在某些情况下,我只知道这个文件的路径,所以一直在导入:
import importlib.util as iu
spec = iu.spec_from_file_location("some_module.somefile", 'path/to/some_module/somefile.py')
mod = iu.module_from_spec(spec)
spec.loader.exec_module(mod)
var1 = mod.foo(1 ,2)
起初这很好用,但在我的单元测试中我发现它type(var)
不等于原始类型,即:
from some_module.somefile import foo
var2 = foo(1, 2)
print(type(var1) is type(var2))
print(isinstance(var1, var2.__class__)
只打印False
's,尽管看起来var1
&var2
在功能上是等效的。
编辑:我正在使用 python 3.9.5 并且在我的测试代码中,var1
&的构造函数var2
位于单独的 .py 文件中,它们被导入到单元测试中,该单元测试试图检查两个对象是否相同。
解决方案
推荐阅读
- c# - 如何在 C# 上从 Oracle 调用函数?
- javascript - 如何创建 JS Canvas 自上而下的雨效果或反向扭曲速度
- mysql - MYSQL 在哪里存储“UPDATE CURRENT_TIMESTAMP”的逻辑
- c# - 如何让 EF Core 设计工具读取自定义配置?
- apache-superset - 如何更改 Superset 的表数据源?
- python - 如何访问熊猫数据框中的单个值
- mysql - 如何在发布帖子后立即通过 wp cron 启动 sql 查询?
- java - 如何按枚举字段对对象列表进行排序?
- sql - 为什么 Oracle 不能识别这种日期格式?
- java - 按数组元素搜索mongo文档