Моника обнови решението на 25.03.2014 09:05 (преди над 10 години)
+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
могат също така да бъдат и клас-атрибути
Да, мерси за коментара. Трябваха ми малко насоки, затова и го качих в такъв вид. :-)