首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重载方法__eq __ ()

重载方法__eq __ ()
EN

Stack Overflow用户
提问于 2016-12-24 07:46:45
回答 0查看 107关注 0票数 0

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

要定义一个零件,一方面编码孔的数量,另一方面编码对角线上的线的粗细。例如,对于八角形工件hole = [3,0,0,3]line = [0,0,2,1]对一个零件进行编码,该零件在水平线上有3个孔,在垂直线上有厚度2的线,在对角线上有3个孔。中心可以由几条对角线管理,相同的零件可以由hole = [3,0,1,2]trait = [0,0,2,1]编码。

所以我重载了__eq __()方法,如下所示:

代码语言:javascript
复制
    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”)

当我尝试这样做的时候:

代码语言:javascript
复制
if __name__=="__main__":
    p1=PieceModele(Canvas())
    p2=PieceUsine(Canvas())
    print(p1)
    print(p2)
    print(p1==p2)
    print(p1==p2)

我在控制台中得到了这个:

代码语言:javascript
复制
[3, 0, 3, 3][1, 1, 1, 0]   8
[0, 0, 0, 0][0, 0, 0, 0]   8
False
True

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

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41309017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档