Моника обнови решението на 25.03.2014 09:05 (преди над 11 години)
+class Rank:
+    def __init__(self, symbol):
+        self.symbol = symbol
+
+    def __str__(self):
+        return self.__class__.__name__
+
+    def __eq__(self, other):
+        return self.symbol == other.symbol
+
+
+class King(Rank):
+    def __init__(self):
+        self.symbol = 'K'
+
+
+class Queen(Rank):
+    def __init__(self):
+        self.symbol = 'Q'
+
+
+class Jack(Rank):
+    def __init__(self):
+        self.symbol = 'J'
+
+
+class Ten(Rank):
+    def __init__(self):
+        self.symbol = '10'
+
+
+class Nine(Rank):
+    def __init__(self):
+        self.symbol = '9'
+
+
+class Eight(Rank):
+    def __init__(self):
+        self.symbol = '8'
+
+
+class Seven(Rank):
+    def __init__(self):
+        self.symbol = '7'
+
+
+class Six(Rank):
+    def __init__(self):
+        self.symbol = '6'
+
+
+class Five(Rank):
+    def __init__(self):
+        self.symbol = '5'
+
+
+class Four(Rank):
+    def __init__(self):
+        self.symbol = '4'
+
+
+class Three(Rank):
+    def __init__(self):
+        self.symbol = '3'
+
+
+class Two(Rank):
+    def __init__(self):
+        self.symbol = '2'
+
+
+class Ace(Rank):
+    def __init__(self):
+        self.symbol = 'A'
+
+
+RANKS = {'King': King, 'Queen': Queen,
+         'Jack': Jack, 'Ten': Ten,
+         'Nine': Nine, 'Eight': Eight,
+         'Seven': Seven, 'Six': Six,
+         'Five': Five, 'Four': Four,
+         'Three': Three, 'Two': Two,
+         'Ace': Ace}
+
+
+class Suit:
+    def __init__(self, color):
+        self.color = color
+
+    def __str__(self):
+        return self.__class__.__name__
+
+    def __eq__(self, other):
+        return str(self) == str(other)
+
+
+class Diamonds(Suit):
+    def __init__(self):
+        self.color = 'red'
+
+
+class Clubs(Suit):
+    def __init__(self):
+        self.color = 'black'
+
+
+class Hearts(Suit):
+    def __init__(self):
+        self.color = 'red'
+
+
+class Spades(Suit):
+    def __init__(self):
+        self.color = 'black'
+
+
+SUITS = {'Diamonds': Diamonds, 'Clubs': Clubs,
+         'Hearts': Hearts, 'Spades': Spades}
+
+
+class Card:
+    def __init__(self, rank, suit):
+        self.rank = rank()
+        self.suit = suit()
+
+    def __str__(self):
+        return '{0.rank} of {0.suit}'.format(self)
+
+    def __eq__(self, other):
+        return self.rank == other.rank and self.suit == other.suit
+
+
+class CardCollection:
+    pass
Виждам, че решенето ти не е напълно готово, но въпреки това бих искал да ти дам няколко насоки:
- Опитай да конструираш подкласовете на 
SuitиRankдинамично, и ще си спестиш доста код. - Когато имплементираш 
__eq__не е напълно адекватно да използваш стринговите репрезентации за сравнение на обектите. - 
symbolиcolorмогат също така да бъдат и клас-атрибути 
Да, мерси за коментара. Трябваха ми малко насоки, затова и го качих в такъв вид. :-)
