Я пытаюсь написать метод __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'? –
'if self.r ==" J "или" j ":' всегда будет 'True', потому что' 'j" 'как строка оценивает значение' True'. Вероятно, вы ищете 'if self.r ==" J "или self.r ==" j "'. Кроме того, вместо 'if isinstance (self.r, int) == False', просто скажите' if not isinstance (self.r, int) '. – jayelm
Вероятно, вы неправильно поняли значение 'return', так как вы используете его для назначения значений переменным. Просто используйте 'self.s = 'Jack'' при назначении. Только последнее использование 'return' правильное, т. Е. Когда вы действительно хотите выйти из функции и вернуть значение. –