0
我編寫了一個教育遊戲,用戶必須重現計算機提供的一個工廠。重載方法__eq __()
要在一方面限定第一部分的代碼孔,並且在另一方面線的厚度的數量,有在對角線上的」。例如,對於八邊形件,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
( 「劈窗」=在法國 「孔」)
,當我嘗試這個辦法:
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)
...
什麼是'self.trou'定義爲?你也嘗試另一副'print(p1);在第一次比較後打印(p2)'。我高度懷疑你的等號運算符實際上是修改了存儲的數據,這會導致問題 – UnholySheep
如果我以前的假設結果是正確的,那麼解決方案將最有可能將'nouveau_trous = self.trous'更改爲'nouveau_trous =或者使用[複製庫](https://docs.python.org/2/library/copy.html) – UnholySheep
在''後面添加'print(p1)'print(p2)''打印(p1 == p2)' – McNets