所以我有這個代碼的對象。這個對象是你可以在岩石剪刀遊戲中做出的一個舉動。 現在,該對象需要既是一個整數(用於匹配協議)和一個字符串以方便編寫和查看。我如何使這個代碼Pythonic
class Move:
def __init__(self, setMove):
self.numToName = {0:"rock", 1:"paper",2:"scissors"}
self.nameToNum = dict(reversed(pairing) for pairing in self.numToName.items())
if setMove in self.numToName.keys():
self.mMove=setMove
else:
self.mMove=self.nameToNum.get(setMove) #make it to a number
def defeats(self):
return Move((self.mMove-1)%3)
def losesTo(self):
return Move((self.mMove+1)%3)
def tiesWith(self):
return self
#Operator overloading
def __eq__(A,B):
return A.mMove==B.mMove
def __gt__(A,B):
return A.defeats(B)
def __lt__(A,B):
return A.losesTo(B)
def __ge__(A,B):
return A>B or A==B
def __le__(A,B):
return A<B or A==B
def __str__(self):
return self.numToName.get(self.mMove);
def __int__(self):
return self.mMove;
現在我有點新來python,來自C和Java背景。 python中的一件大事就是隻有一種正確的方法來做某件事。 另一件事是不擔心類型。 我很明確地擔心這裏輸入。
所以我不知道什麼是正確的方式來處理這些對象。 目前我有一個對象,它是任何3種類型之一(或更多,但我不知道會做什麼) 也許我應該使用不同類的對象?並讓他們成爲單身人士? 另外我的對象目前在創建後可以修改,這在我的腦海中是一件壞事。
所以這段代碼是Pythonic,我怎樣才能讓它更優雅? (我想這是一個很好的例子,可以幫助我理清python代碼的作用,對不起,如果看起來有點開放式結尾)
如果你想understan d更多的實際問題/遊戲是顯而易見的/progcomp.ucc.asn.au/FrontPage 這些舉動是次要的事情,我只是隨意地想,我可能想創建一個類型,作爲更好的方式來表揚他們。正如我所說的 – 2010-09-16 05:49:32