Алекс обнови решението на 15.11.2022 00:11 (преди почти 3 години)
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
Добавяйки __eq__ правиш обектa си unhashable, освен ако не дефинираш и __hash__. Това значи, че ако искам да взема списък карти и ги поставя в set, което по една случайност е точно това, което правим в тестовете си, няма да ни позволиш.
Ако наистина в кода си използваш тази функционалност, добави и __hash__ = object.__hash__ във всеи обект, който предефинира __eq__. Ако не, просто махни __eq__.
Ако не го направиш, доста тестове ще гръмнат. Бих преправил тестовете да заобикалят този проблем, но не смятам, че проблемът е в тестовете. Проблемът е в твоя код. Използването на карти в set е от огромна важност за една истинска игра с карти.
Това май никъде не се използва.
Има вариант да избереш краен индекс и да не промениш тестето.
Може просто да върнеш self.players, което е частен случай на твоят вариант. Причината в условието да пише произволен играч е, че не знаем как ще държиш играчите си в класа и не можем да дефинираме кой е пръв и кой последен.
self.players.index(player)
Не виждам причина да не сравниш цялата стойност, а само първият символ, но щом така си решил, не виждам проблем.

self.players.index(player)