Оптимизация функции Python

ревьюер сказал что нужно оптимизировать функцию но я не могу понять как это сделать

class Test:
    def __init__(self, name: str, tasks: str, penalties: str) -> None:
        self.name = name
        self.tasks = int(tasks)
        self.penalties = int(penalties)

    def __lt__(self, prev: 'Participant') -> bool:
        if self.tasks == prev.tasks:
            if self.penalties == prev.penalties:
                return self.name < prev.name
            return self.penalties < prev.penalties
        return self.tasks > prev.tasks

    def __str__(self) -> str:
        return self.name

а комментарий таков:

Вместо `if'-ов советую просто сравнить кортежи

только я вот не пойму как это сделать если у меня на if завязаны return'ы


Ответы (1 шт):

Автор решения: n1tr0xs

Это можно сделать так:

  1. Избавляемся от if self.penalties == prev.penalties:, return self.penalties < prev.penalties - так как знаки сравнения name и penalties одинаковы (<) просто сравнием кортежи (penalties, name):
def __lt__(self, prev: 'Participant') -> bool:
    if self.tasks == prev.tasks:
        return (self.penalties, self.name) < (prev.penalties, prev.name)
    return self.tasks > prev.tasks
  1. Избавляемся от if self.tasks == prev.tasks:, return self.tasks > prev.tasks - так как знаки сравнения (penalties, name) и tasks различаются, то меняем местами self.tasks и prev.tasks:
def __lt__(self, prev: 'Participant') -> bool:
    return (prev.tasks, self.penalties, self.name) < (self.tasks, prev.penalties, prev.name)
→ Ссылка