Чтобы распечатать раскрыть странную запись объекта, попробуйте вставить определение __repr__
в класс PlayingCard
Например:
class PlayingCard:
def __init__(self, rank, suit):
if str(rank) not in all_rank:
raise RankError("Invalid rank! Rank must be 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, or A")
if suit not in all_suit:
raise SuitError("Invalid suit! Suit must be ♠, ♥, ♦, or ♣")
self.rank = rank
self.suit = suit
def __str__(self):
return str(self.rank) + " of " + str(self.suit)
# ADDITION HERE
def __repr__(self):
return "%r of %r" % (self.rank, self.suit)
Итак, работаетprint(deck1.cards)
выведет
['2' of '♠', '3' of '♠', '4' of '♠', '5' of '♠', '6' of '♠', '7' of '♠', '8' of '♠', '9' of '♠', '10' of '♠', 'J' of '♠', 'Q' of '♠', 'K' of '♠', 'A' of '♠']
Чтобы напечатать всю колоду , вам необходимо обновить определение __init__
для класса Deck
.
def __init__(self, suit = all_suit):
self.cards = [PlayingCard(rank, one_suit) for rank in all_rank
for one_suit in suit]
Снова запустив print(deck1.cards)
, он напечатает следующее.
['2' of '♠', '2' of '♥', '2' of '♦', '2' of '♣', '3' of '♠', '3' of '♥', '3' of '♦', '3' of '♣', '4' of '♠', '4' of '♥', '4' of '♦', '4' of '♣', '5' of '♠', '5' of '♥', '5' of '♦', '5' of '♣', '6' of '♠', '6' of '♥', '6' of '♦', '6' of '♣', '7' of '♠', '7' of '♥', '7' of '♦', '7' of '♣', '8' of '♠', '8' of '♥', '8' of '♦', '8' of '♣', '9' of '♠', '9' of '♥', '9' of '♦', '9' of '♣', '10' of '♠', '10' of '♥', '10' of '♦', '10' of '♣', 'J' of '♠', 'J' of '♥', 'J' of '♦', 'J' of '♣', 'Q' of '♠', 'Q' of '♥', 'Q' of '♦', 'Q' of '♣', 'K' of '♠', 'K' of '♥', 'K' of '♦', 'K' of '♣', 'A' of '♠', 'A' of '♥', 'A' of '♦', 'A' of '♣']
И еще раз проверим, сколько у нас:
print(len(deck1.cards)) # 52