我正在嘗試爲需要排名和套裝的「Card」類編寫__str__
方法。我想對於方法採取(例如)「J」返回「傑克」這是我到目前爲止有:爲__str__方法返回布爾值
def __init__(self,rank,suit):
'''Rank represents the number on the card (Ace-King). Suit represents the type on each card
(Hearts,Diamonds,Spades,Clubs)'''
self.r = rank
self.s = suit
def __str__(self):
'''Creates a string for appropriate display of cards'''
if isinstance(self.r,int) == False:
if self.r == "J" or "j":
return self.r == "Jack"
if self.r == "Q" or "q":
return self.r == "Queen"
if self.r == "K" or "k":
return self.r == "King"
if self.r == "A" or "a":
return self.r == "Ace"
if self.s == "D" or "d":
return self.s == "Diamonds"
if self.s == "H" or "h":
return self.s == "Hearts"
if self.s == "S" or "s":
return self.s == "Spades"
if self.s == "C" or "c":
return self.s == "Clubs"
return str(self.r) + " " + "of" + " " + str(self.s)
我正在與返回:TypeError: __str__ returned non-string (type bool)
您是否試過返回'str'? –
'如果self.r ==「J」或「j」:'將始終爲'True',因爲字符串的「j」爲「真」。你可能正在尋找'如果self.r ==「J」或self.r ==「j」'。此外,而不是'if isinstance(self.r,int)== False',只要說'if isinstance(self.r,int)'。 – jayelm
您可能誤解了'return'的含義,因爲您正在使用它來爲變量賦值。分配時只需使用'self.s ='Jack''。只有最後一次使用'return'是正確的,即當你真的想離開函數並返回一個值。 –