Skip to main content
Engineering LibreTexts

9.5: Printing the Deck

  • Page ID
    15471
  • 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 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.