簡體   English   中英

Python-__str__返回列表的元素

[英]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_cardsPlayer添加缺少的方法__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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM