[英]Python - __str__ returning elements of a list
我有兩個類,我們稱它們為A和B。現在A應該打印出卡值,例如
def __str__(self):
return (str(self.value) + self.suit)
3H #This is what is returned.
並且效果很好,但是我的問題是試圖讓B正確顯示。 我需要回去
'Players Card's 3H 4H (Total 7)' #This whole line is supposed to be printed
我在__str_部分下寫東西時遇到麻煩,因此我可以用它打印出A的值,但以B所需的格式輸出。
編輯:因此,類別B將有一個列表,讓我們稱其為手,而該列表具有類別A的類對象,它們是格式為“ 3H”的卡對象,因此手形可能如下所示:
hand = ['3H', '4H']
我想像A類一樣打印出來,但在B類的__str_中打印
假設這是您的Card
類:
class Card(object):
# has self.value and self.suit
def __str__(self):
return (str(self.value) + self.suit)
所以您的玩家職業是這樣的:
class Player(object):
# has self.card1, self.card2
def __str__(self):
return "Player's Cards %s %s (Total %d)" % (
self.card1, self.card2, self.__sum_of_cards()
)
因此,您所需__sum_of_cards
在Player
添加缺少的方法__sum_of_cards
:
def __sum_of_cards(self):
return self.card1.value + self.card2.value
您可以直接在__str__
中執行__sum_of_cards
,而不是實現__sum_of_cards
,但是我假設如果您要打印它,它就意味着某些東西,這意味着在其他地方也需要它。
列表也是如此:
class Player(object):
# has self.hand
def __str__(self):
return "Player's Cards %s (Total %d)" % (
",".join(str(card) for card in self.hand),
self.__sum_of_hand()
)
但是需要另一個__sum_of_hand
:
def __sum_of_hand(self):
return sum(x.value for x in self.hand)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.