Skip to main content
Engineering LibreTexts

18.5: Printing the deck

  • Page ID
    40840
  • Here is a __str__ method for Deck:

    #inside class Deck:
    
        def __str__(self):
            res = []
            for card in self.cards:
                res.append(str(card))
            return '\n'.join(res)
    

    This method demonstrates an efficient way to accumulate a large string: building a list of strings and then using the string method join. The built-in function str invokes the __str__ method on each card and returns the string representation.

    Since we invoke join on a newline character, the cards are separated by newlines. Here’s what the result looks like:

    >>> deck = Deck()
    >>> print(deck)
    Ace of Clubs
    2 of Clubs
    3 of Clubs
    ...
    10 of Spades
    Jack of Spades
    Queen of Spades
    King of Spades
    

    Even though the result appears on 52 lines, it is one long string that contains newlines.

    • Was this article helpful?