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