Python - __str__返回列表的元素

时间:2015-03-06 22:02:36

标签: python class return

我有两个类,我们称之为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 _

1 个答案:

答案 0 :(得分:1)

假设这是您的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

def __sum_of_cards(self):
    return self.card1.value + self.card2.value

您可以直接在__str__中执行此操作,而不是实施__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)