Тина обнови решението на 12.11.2022 02:06 (преди около 3 години)
Това като че ли текстовият ти редактор е добавил сам. Не се използва.
Оставяй два нови реда между код на топ ниво - след импортите, около дефиниране на променливи, около класовете...
Бих използвал 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, възползвай се от кода, написан там. В общи линии инициализирането трябва да се случва само там, за да не повтаряш код. И така работи, но се губи идеята, защото не преизползваш кода на родителя.