我 需要在控制台中编写 ,例如:
Ace D , Queen H
我在Google中发现我需要仔细检查__str__(self)
方法。
我不知道方法__str__(self)
如何编写我的输出就像我上面提到的那样。例如:
return self.hand
执行以下操作:
[<__main__.Card object>, <__main__.Card object>]
我认为Hand对象是这样的列表:
[[card 1],[card 2],..]
是
[[适合1,等级1],[..,..],..]
但我不知道如何从列表清单中获取该信息。 这样的写作没有帮助: 手[i] [0]为西装和手[i] [1]为第i张卡的等级 仍然没有得到。这是代码:
class Card:
def __init__(self, suit, rank):
if (suit in SUITS) and (rank in RANKS):
self.suit = suit
self.rank = rank
else:
print "Invalid card: ", suit, rank
def __str__(self):
return self.suit + self.rank
class Hand:
def __init__(self):
self.hand = []
def __str__(self):
return str(self.hand)
def add_card(self, card):
self.hand.append(card)
创建对象卡
c1 = Card("S", "A")
c2 = Card("C", "2")
创建OBJECT HAND
test_hand = Hand()
添加卡牌
test_hand.add_card(c1)
test_hand.add_card(c2)
print test_hand
结果是:
[<__main__.Card object>, <__main__.Card object>]
答案 0 :(得分:1)
在Card()类中,您可以添加类似于
的__str__()
方法
def __str__(self):
return "{} {}".format(self.rank, self.suit) # assuming Python2.7+
现在,当您打印一个Card实例时,它将返回一个用户友好的字符串,如Ace D
要为手部实例打印好的内容,可以使用.join()
字符串方法和__str__()
内的生成器。
def __str__(self):
return ', '.join(str(c) for c in self.hand)
现在,当您打印手部实例时,它将提供用户友好的输出,如
Ace D , Queen H
了解有关__str__()
和__repr__()
的更多信息的良好资源是this stackoverflow question。
编辑:如果您将推荐的__str__()
方法添加到更新的代码中,则输出就是您想要的:
A S, 2 C