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.