Card Data Class¶dataclasses and typing Modules¶dataclasses module defines decorators and functions for
implementing data classes@dataclass decorator specifies that a new class is a data class and causes various code to be written for youClassVar and List from the typing module will indicate that FACES and SUITS are class variables that refer to lists# carddataclass.py
"""Card data class with class attributes, data attributes,
autogenerated methods and explicitly defined methods."""
from dataclasses import dataclass
from typing import ClassVar, List
@dataclass Decorator¶@dataclass decorator: @dataclass
class Card:
@dataclass(order=True) would cause the data class to autogenerate overloaded comparison operator methods for <, <=, > and >=FACES: ClassVar[List[str]] = ['Ace', '2', '3', '4', '5', '6', '7',
'8', '9', '10', 'Jack', 'Queen', 'King']
SUITS: ClassVar[List[str]] = ['Hearts', 'Diamonds', 'Clubs', 'Spades']
: ClassVar[List[str]] (sometimes called a type hint) specifies that FACES is a class attribute (ClassVar) which refers to a list of strings (List[str]). SUITS also is a class attribute which refers to a list of strings__init__, __repr__ and __eq__, however, are for use with objects of the class__init__ methodNameError, as in:from dataclasses import dataclass
@dataclass
class Demo:
x # attempting to create a data attribute x
": str" indicates face and suit should refer to string objects@property
def image_name(self):
"""Return the Card's image file name."""
return str(self).replace(' ', '_') + '.png'
def __str__(self):
"""Return string representation for str()."""
return f'{self.face} of {self.suit}'
def __format__(self, format):
"""Return formatted string representation."""
return f'{str(self):{format}}'
©1992–2020 by Pearson Education, Inc. All Rights Reserved. This content is based on Chapter 5 of the book Intro to Python for Computer Science and Data Science: Learning to Program with AI, Big Data and the Cloud.
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.