class Card: """ A playing card. Each card object has a face value, a suit, and an image file name. """ FACES = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King'] SUITS = ['Hearts', 'Diamonds', 'Clubs', 'Spades'] def __init__(self, face, suit): """ Construct a Card object. """ self._face = face self._suit = suit self._image_name = str(self).replace(' ', '_') + '.png' @property def face(self): """ @return the card's face value. """ return self._face @property def suit(self): """ @return the card's suit. """ return self._suit @property def image_name(self): """ @return the card's image file name. """ return self._image_name def __repr__(self): """ @return the card's official string representation. """ return f"Card(face='{self.face}', suit='{self.suit}', image_name='{self._image_name}')" def __str__(self): """ @return the cards' string representation for str(). """ return f'{self.face} of {self.suit}' def __format__(self, format): """ @return the card's formatted string representation. """ return f'{str(self):{format}}' ########################################################################## # (C) Copyright 2019 by Deitel & Associates, Inc. and # # Pearson Education, Inc. All Rights Reserved. # # # # DISCLAIMER: The authors and publisher of this book have used their # # best efforts in preparing the book. These efforts include the # # development, research, and testing of the theories and programs # # to determine their effectiveness. The authors and publisher make # # no warranty of any kind, expressed or implied, with regard to these # # programs or to the documentation contained in these books. The authors # # and publisher shall not be liable in any event for incidental or # # consequential damages in connection with, or arising out of, the # # furnishing, performance, or use of these programs. # ########################################################################## # Additional material (C) Copyright 2024 by Ronald Mak