过载法

2024-06-25 05:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

要定义一个零件,一方面要编码孔的数量,另一方面要编码对角线上的线的厚度”。例如,对于八角形工件,hole = [3,0,0,3]line = [0,0,2,1]编码水平线上有3个孔的零件,垂直线上有厚度为2的线,以及反对角线上有3个孔的厚度为1的线。 中心可以用几个对角线来管理,同一部分可以用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”=“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

我不明白为什么我会在第二天变成现实。。。你知道吗


Tags: self编码ifreseqotherprintp2
1条回答
网友
1楼 · 发布于 2024-06-25 05:29:30

如果我之前的假设被证明是正确的,那么解决方案很可能会改变nouveau_trous = self.trous to nouveau_trous = self.trous[:]或者使用拷贝库-邪恶的羊

你在比较元组,我假设,是你的类。我不知道你是怎么做到的。–2个

相关问题 更多 >