重载方法__eq __()

时间:2016-12-23 23:46:45

标签: python

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

为了定义第一部分,一方面编码孔的数量,另一方面定义对角线上的线的粗细"。例如,对于八角形片,hole = [3,0,0,3]line = [0,0,2,1]编码水平线上有3个孔的部分,垂直线上的厚度为2的线和厚度为1的线,在反对角线上有3个孔。 该中心可以由多个对角线管理,同一部分可以由hole = [3,0,1,2]trait = [0,0,2,1]进行编码。

所以我重载了这样的__eq __()方法:

    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" ="洞"法语)

当我尝试这个时:

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

我不明白为什么我为第二个print(p1==p2) ...

获得了真实

1 个答案:

答案 0 :(得分:0)

如果我之前的假设是正确的,那么解决方案最有可能改变nouveau_trous = self.trous to nouveau_trous = self.trous[:]或使用副本库 - UnholySheep

你将元组与我认为是你的课程进行比较。我不确定你在任何时候都是如此。 - 2rs2ts