 <p>Here is another approach to make a deck of cards</p> <pre><code>from itertools import product card_values = ( ("1", "1", 1), ("2", "2", 2), ("3", "3", 3), ("4", "4", 4), ("5", "5", 5), ("6", "6", 6), ("7", "7", 7), ("8", "8", 8), ("9", "9", 9), ("10" ,"10", 10), ("Jack", "J", 10), ("Queen", "Q", 10), ("King", "K", 10), ("Ace", "A", 11)) card_suits = ("Spades", "Clubs", "Hearts", "Diamonds") class Card(object): def __init__(self, name, short_name, rank, suit): self.name = name self.short_name = short_name self.rank = rank self.suit = suit cards = [] for (name, short_name, rank), suit in product(card_values, card_suits): cards.append(Card(name, short_name, rank, suit)) </code></pre>