Виктор обнови решението на 25.11.2022 19:56 (преди почти 2 години)
Интервалът преди :
е излишен.
Винаги слагай __init__
на първа позиция в списъка на методи в класа.
Резултатът от този метод ще е константа, така че можеш просто да го запишеш като атрибут на инстанцията и да го преизползваш, вместо да въртиш цикъла при всяко извикване на метод, който изисква сумата.
По-добре int(self)
.
Вместо да въртиш и цялата матрица, търсейки конкретен ред и колона, можеш директно да попиташ за тях. Най-добре предварително да дефинираш дъската като двумерен масив, или като речник, за да можеш лесно да манипулираш стойностите в последствие, вместо при всяко извикване на функцията да си играеш да го парсваш наново.
if square.lower in __pieces_lowercase
прави същото.
ord(square) - ord('0')
би трябвало да е същото като int(square)
Тук май пропускаш черните пешки. Може просто аз да пропускам нещо, но не виждам друга проверка за тях.
Според мен това е излишно. Реално погледнато, така, както съм дефинирал условието, би могъл да работиш с всякакъв интерабъл от стрингове. Да, не е по дизайн, но би могъл, а този ред те спира и ти дава да използваш само стрингове.
Това е операция, която ще връща константа стойност всеки път, така че е добра идея да инициализираш ChessScore
веднъж, да го запазиш като атрибут на инстанцията и после само да го връщаш при нужда.
Доста неща си дефинирал с две долни черти. Според мен за почти всички от тях една е достатъчно. За някои методи, които помагат да си парснеш данните при инциализиране съм ок и с две.
Това е операция, която ще връща константа стойност всеки път, така че е добра идея да инициализираш
ChessScore
веднъж, да го запазиш като атрибут на инстанцията и после само да го връщаш при нужда.