title: I know a card has been added to the hand and removed from the deck, but I can't figure out how to print the contents of that card
body: <pre><code>import pygame
  import random
  
  class Deck:
      def build( self ):
          self.deck = []
          face = [ 'J', 'Q', 'K', 'A' ]
          for value in range( 2, 15 ):
              for suit in [ 'C', 'D', 'H', 'S' ]:
                  if value &gt; 10:
                      new_value = face[ value - 11 ]
                      card_image = str( new_value ) + suit + '_med.jpg'
                  else:
                      card_image = str( value ) + suit + '_med.jpg'
                  card = Card( value, suit, card_image )
                  self.deck.append( card )
      def show( self ):
          for card in self.deck:
              card.show()
      def remove_card( self ):
          card_removed = self.deck.pop()
          print( 'card removed -&gt; {}'.format( card_removed ) )
          return card_removed
          #return self.deck.pop()
  
  class Card:
      def __init__( self, value, suit, image_name ):
          self.value = value
          self.suit = suit
          self.image_name = image_name
      def show( self ):
          print( 'card image -&gt; {}, suit -&gt; {}, value -&gt; {}'.format( self.image_name, self.suit, self.value ) )
  
  class Hand:
      def __init__( self, name ):
          self.name = name
          self.cards = []
      def speak( self ):
          print( 'hello my name is {}'.format( self.name ) )
      def draw( self, deck ):
          card = deck.remove_card()
          self.cards.append( card )
          print( 'card drawn -&gt; {}'.format( card ) )
          # self.cards.append( deck.remove_card() )
      def show( self ):
          for i in self.cards:
              print( i )
              
  deck = Deck()
  deck.build()
  deck.show()
  
  hand = Hand( 'Kristy' )
  hand.speak()
  hand.draw( deck )
  
  # show updated hand and deck
  hand.show()
  deck.show()
  </code></pre>
  <p>When I run this I get None for the card object (that has been removed from the deck, and placed into the hand).  Why is this happening?  I've tried searching on &quot;Python None object&quot;, but I'm clueless. My goal is to create a gui-based card game, but I realize that there is no point in bringing in graphics until I can the output that will be needed to put those cards on the canvas.</p>
  <p>EDIT: I am also getting the memory addresses of the objects rather than details about the objects.</p>
  <p>When I run the edited code (changing last line in Hand.show() to &quot;i.show()&quot; ), I am getting the following:</p>
  <hr />
  <pre><code>hello my name is Kristy
  card removed -&gt; &lt;__main__.Card object at 0x0000015F48C1F6D0&gt;
  card drawn -&gt; &lt;__main__.Card object at 0x0000015F48C1F6D0&gt;
  </code></pre>