鱼C论坛

 找回密码
 立即注册
查看: 2113|回复: 2

类的相等问题与deepcopy

[复制链接]
发表于 2023-3-12 16:26:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
                    test1_solution = copy.deepcopy(self.solution)
                    before_change_successful_task_num = check.returnTotalNumSuccessfulTask(self.solution)
                    print('before_num',before_change_successful_task_num)
                    current_task1.setImageChance(optional_image_chance_list1[i])
                    current_task2.setImageChance(optional_image_chance_list2[j])
                    test2_solution = copy.deepcopy(self.solution)
                    l = 0
                    for k in range(len(self.solution)):
                        print(len(self.solution))
                        if(test1_solution[k].getImageChance() == test2_solution[k].getImageChance()):
                            l += 1
                        #else:
                        #    if(test1_solution[k].getImageChance() != None):
                        #        print('test1_sloution',test1_solution[k].id,test1_solution[k].getImageChance().id)
                        #        print('test2_sloution',test2_solution[k].id,test2_solution[k].getImageChance().id)
                        #    else:
                        #        print('test1_sloution',test1_solution[k].id,test1_solution[k].getImageChance())
                        #        print('test2_sloution',test2_solution[k].id,test2_solution[k].getImageChance())
                    print('l',l)

截取了代码了一段,self.solution是由current_task元素构成的长度为6000的列表,current_task1和current_task2是其中的两个元素,setImageChance这个函数改变了元素的某个属性,上述代码总共改变了两个元素的属性,改变前后均deepcopy了一份,按理来说后续打印出来的l应该是5998,但是运行发现结果为100多,求大佬指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-12 16:27:54 | 显示全部楼层
getImageChance运行完会得到一个类,这个类的相等是用默认的方法,没有自定义类相等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-31 00:04:55 | 显示全部楼层
根据您提供的代码和注释,可以看到在循环中比较了test1_solution和test2_solution两个深拷贝后的列表中元素属性值是否相等。如果属性值相等,则将计数器l加一。

但是从代码中无法确定check.returnTotalNumSuccessfulTask(self.solution)函数的具体实现以及current_task、optional_image_chance_list等其他变量的定义和赋值情况,这些因素均可能对结果产生影响。因此需要更多上下文信息来判断问题的具体原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 21:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表