问题描述
我没有收到错误,但无法让我的课程正常运行。
我试图让 Card 类打印“两颗心”,但运行它时我什么也没得到。还测试了我的套牌课程,我得到了 <__main__.Deck object at 0x0000029A1F045F70>
,我不记得如何更正了。
import random
suits = ['spades','hearts','clubs','diamonds']
ranks = ['two','three','four','five','six','seven','eight','nine','ten','jack','queen','king','ace']
values = {'two': 2,'three': 3,'four': 4,'five': 5,'six': 6,'seven': 7,'eight': 8,'nine': 9,'ten': 10,'jack': 10,'queen': 10,'king': 10,'ace': 11}
playing = True
class Card:
def __init__(self,value,suit):
self.value = value
self.suit = suit
def show(self):
print("{} of {}".format(self.value,self.suit))
card_picked = Card('two','hearts')
class Deck:
def __init__(self):
self.cards = []
self.build()
def build(self):
for i in values:
for s in suits:
self.cards.append(Card(i,s))
def show(self):
for c in self.cards:
c.show()
def shuffle(self):
random.shuffle(self.cards)
def deal(self):
single_card = self.cards.pop()
return single_card
deck = Deck()
print(deck)
预先感谢您提供的任何帮助!
解决方法
print() 访问类的 __str__ 方法(如果该方法存在)。
您可以为您的 Card 类定义它:
class Card:
[...]
def __str__(self):
return "{} of {}".format(self.value,self.suit)
对于整个牌组,您可以获得该牌组中每张牌的 __str__ 方法:
class Deck:
[...]
def __str__(self):
return '\n'.join([c.__str__() for c in self.cards])
,
您的代码运行良好。
deck = Deck()
deck.shuffle()
card = deck.deal()
card.show()
我得到输出:
six of hearts