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