Решение на От ливадите до Лас Вегас (и назад) от Цветелина Чакърова
Към профила на Цветелина Чакърова
Резултати
- 10 точки от тестове
- 0 бонус точки
- 10 точки общо
- 15 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
............... ---------------------------------------------------------------------- Ran 15 tests in 0.158s OK
История (6 версии и 8 коментара)
Цветелина обнови решението на 10.11.2022 14:56 (преди над 2 години)
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
deck = Deck()
ще се евалюира само веднъж - при дефинирането на класа ти. Т.е този клас ще работи само при една инстанция. Повече инстанции ще го счупят, защото ще споделят едно и също тесте.
class Deck:
pass
class Game:
def __init__(self, deck=Deck()):
self.deck = deck
game1 = Game()
game2 = Game()
print(game1.deck is game2.deck) # True
Ако не ти трябва променливата, използвай _
- просто конвенция:
[Player() for _ in range(self.number_of_players)]
Бих извадил self.players.index(first_player)
на отделен ред, за да е по-четимо.
index = self.players.index(first_player)
self.players = self.players[index:] + self.players[:index]
Нулата е излишна.
Тъй като наследяваш Game
, можеш да си спестиш доста от нещата, които се случва по-долу, като просто извикаш __init__
на Game
.
Цветелина обнови решението на 11.11.2022 13:41 (преди над 2 години)
Цветелина обнови решението на 11.11.2022 14:07 (преди над 2 години)
Цветелина обнови решението на 11.11.2022 15:43 (преди над 2 години)
А защо не private в случая, тъй като клас Card няма наследници?
Може, но според мен protected е достатъчно. Рядко искаш да си толкова стриктна в Python. protected в повечете случаи е напълно достатъчно. Все пак така или иначе можеш да достъпиш и двете.
Тъй като наследяваш
Game
, можеш да си спестиш доста от нещата, които се случва по-долу, като просто извикаш__init__
наGame
.