Тина обнови решението на 12.11.2022 02:06 (преди около 2 години)
Това като че ли текстовият ти редактор е добавил сам. Не се използва.
Оставяй два нови реда между код на топ ниво - след импортите, около дефиниране на променливи, около класовете...
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
Може би е добра идея да хвършил грешка, ако подадеш невалидна стойност и този if
не се изпълни. Ние няма да тестваме за такива неща, но след като изрично си сложила if
, би било добре да довършиш логиката си.
При дефиниране на стойност по подразбиране не се слагат интервали около равното.
Можеш да обединиш двата почти идентични блока код, като предварително сложиш списъка с faces в променлива.
Имайки предвид, че това ползваш само на едно място, вътре в самия клас, а реално ти трябват повече символи да извикаш метода, бух минал и без него. Направо си ползвай len
в cut
метода.
Ако обхождаш с променлива, която няма да използваш, изполвай _
по конвенция.
Освен това не виждам причина изрично да започваш от 1. Числото е случайно, можеш просто да кажеш for _ in range(cards_to_cut):
Ако използваш слайсинг, ще е по-четимо, а според мен и по-бързо (за по-бързо не съм сигурен).
self.cards = self.cards[cards_to_cut:] + self.cards[:cards_to_cut]
range(0, x)
е същото като range(x)
Можеш да вземеш всички карти и да ги extend
-неш, вместо да ги append
-ваш една по една. И така раобти, но иска повече писане.
Съветите ми по-горе за слайсинг и extend
могат да ес приложат и тук, за да спестиш няколко реда и цикъла.
self.players.index(player)
дава този индекс
Може да греша, но не виждам къде използваш dealing_direction
EDIT: Ок видях, че отделно презаписваш метода за белот.
След като наследяваш Game
, възползвай се от кода, написан там. В общи линии инициализирането трябва да се случва само там, за да не повтаряш код. И така работи, но се губи идеята, защото не преизползваш кода на родителя.
Същото и тук. Да, така работи, но ако вземеш предвид посоката в оригиналния Game
, ще спестиш дублиране на код. Освен това, ние ще тестваме Game
и самостоятелно - той трябва да е способен да взима предвид посоката без да е наследен.
Можеш да обединиш двата почти идентични блока код, като предварително сложиш списъка с faces в променлива.
Съветите ми по-горе за слайсинг и
extend
могат да ес приложат и тук, за да спестиш няколко реда и цикъла.След като наследяваш
Game
, възползвай се от кода, написан там. В общи линии инициализирането трябва да се случва само там, за да не повтаряш код. И така работи, но се губи идеята, защото не преизползваш кода на родителя.