导入heapsort模块后出现NameError:DSAHeapEntry未定义,如何解决?
解决NameError: name 'DSAHeapEntry' is not defined问题
问题根源是你测试代码里的名称引用方式错误:DSAHeapEntry类定义在heapsort模块中,直接在测试代码里使用这个类名,Python无法识别该全局名称,因此抛出错误。
以下两种方案可快速修复:
方案一:直接导入目标类和函数
将测试代码开头的导入语句修改为:
from heapsort import DSAHeapEntry, heapSort
修改后后续代码可直接使用DSAHeapEntry和heapSort名称,无需添加模块前缀。
方案二:通过模块前缀调用类和函数
若不想修改导入语句,可在测试代码的类和函数调用前添加模块前缀:
import heapsort # 创建DSAHeapEntry对象数组并赋值 arr = [heapsort.DSAHeapEntry(5), heapsort.DSAHeapEntry(3), heapsort.DSAHeapEntry(8), heapsort.DSAHeapEntry(1), heapsort.DSAHeapEntry(2)] # 使用堆排序对数组排序 heapsort.heapSort(arr) # 打印排序后的数组 for entry in arr: print(entry.value)
额外注意事项
确保测试代码与heapsort.py文件处于同一文件夹,或heapsort.py所在目录已加入Python的搜索路径,否则会先触发ImportError错误。
内容的提问来源于stack exchange,提问作者Rasal.A
相关产品推荐
相关产品推荐

