Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重载方法(等式)_Python - Fatal编程技术网

Python 重载方法(等式)

Python 重载方法(等式),python,Python,我编写了一个教育游戏,用户必须复制计算机提供的一个工厂 定义零件时,第一部分一方面编码孔的数量,另一方面编码对角线上的线的厚度”。例如,对于八角形零件,孔=[3,0,0,3],线=[0,0,2,1]对水平线上有3个孔的零件、垂直线上有厚度为2的零件和反对角线上有3个孔的厚度为1的零件进行编码。 中心可由多条对角线管理,同一零件可通过孔=[3,0,1,2],特征=[0,0,2,1]进行编码 因此,我重载了\uuuuueq\uuuq()方法,如下所示: def __eq__(self, ot

我编写了一个教育游戏,用户必须复制计算机提供的一个工厂

定义零件时,第一部分一方面编码孔的数量,另一方面编码对角线上的线的厚度”。例如,对于八角形零件,
孔=[3,0,0,3]
线=[0,0,2,1]
对水平线上有3个孔的零件、垂直线上有厚度为2的零件和反对角线上有3个孔的厚度为1的零件进行编码。 中心可由多条对角线管理,同一零件可通过
孔=[3,0,1,2]
特征=[0,0,2,1]
进行编码

因此,我重载了
\uuuuueq\uuuq()
方法,如下所示:

    def __eq__(self, other):

    nouveau_trous = self.trous
    res=()
    for i in range(len(nouveau_trous)):
        if nouveau_trous[i] == 3 or nouveau_trous[i]==1:
            nouveau_trous[i]=nouveau_trous[i]-1
            retenue=1
            res=(nouveau_trous,self.traits,retenue)
    return res==other
(“trous”=法语中的“holes”)

当我尝试这个:

if __name__=="__main__":
    p1=PieceModele(Canvas())
    p2=PieceUsine(Canvas())
    print(p1)
    print(p2)
    print(p1==p2)
    print(p1==p2)
我在控制台中看到:

[3, 0, 3, 3][1, 1, 1, 0]   8
[0, 0, 0, 0][0, 0, 0, 0]   8
False
True

我不明白为什么第二次打印(p1==p2)..

时我得到了正确的答案,如果我之前的假设被证明是正确的,那么解决方案很可能会将
nouveau_trous=self.trous更改为nouveau_trous=self.trous[:]
或使用复制库–邪恶羊


您正在将元组与类进行比较,我假设元组是您的类。我不确定您在任何时候是如何实现的。-2rs2ts

什么是
self.trou
定义的?您是否尝试放置另一对
print(p1);print(p2)
在第一次比较之后。我高度怀疑您的相等运算符实际上正在修改存储的数据,这会导致问题,如果我之前的假设是正确的,那么解决方案很可能会将
nouveau_trous=self.trous
更改为
nouveau_trous=self.trous[:]
或使用添加另一个
打印(p1)
打印(p2)
打印(p1==p2)
后使用