import collections Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self) -> None: self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self, position): return self._cards[position] def foo(self): print(self.ranks) print(self.suits) print(self._cards) def main(): cards = FrenchDeck() # cards.foo() print(len(cards)) print(cards[0]) if __name__ == '__main__': main()