如何更改__lt__神奇方法,以便该算法可以工作? -Python

Python排序问题

我有一个排序算法问题,包括对子类优先级人员的对象进行排序(此对象将放置在列表中,目标是更改子类优先级人员的lt方法,以对.sort()方法产生影响在清单上),如果优先级对象的对象具有参数True所描述的缺陷,则与具有参数False(这意味着该人员没有任何缺陷)的优先级对象相比,应该认为该对象较少两者都有缺陷或都没有缺陷,应考虑有关优先权人名字的字典顺序。如上所示,Priority Person子类的主要类是Person类:

class Person(object):

    def __init__(self, name):
        """Create a person"""
        self.name = name
        try:
            lastBlank = name.rindex(' ')
            self.lastName = name[lastBlank + 1:]
        except:
            self.lastName = name
        self.birthday = None

    def __lt__(self, other):
        """Returns True if self's name is lexicographically
           less than other's name, and False otherwise"""
        return self.name < other.name

    def __str__(self):
        """Returns self's name"""
        return self.name

class PriorityPerson(Person): # the __lt__ part of this class does not work and I don't know why?

   def __init__(self,name,deficiencia):
        super().__init__(name)
        self.deficiente = deficiencia


    def __lt__(self, other):
        if self.deficiente and other.deficiente and self.name< other.name:
            return self.name < other.name
        elif self.deficiente and other.deficiente and other.name < self.name:
            return other.name< self.name
        elif self.deficiente and not other.deficiente and self.name < other.name:
            return self.name < other.name
        elif self.deficiente and not other.deficiente and other.name < self.name:
            return self.name< other.name
        elif not self.deficiente and other.deficiente and self.name < other.name:
            return other.name < self.name
        elif not self.deficiente and other.deficiente and other.name < self.name:
            return other.name < self.name
        elif not self.deficiente and not other.deficiente and self.name < other.name:
            return  self.name < other.name
        elif not self.deficiente and not other.deficiente and other.name < self.name:
            return other.name < self.name

实现示例:

p1 = PriorityPerson("John Smith", False)
p2 = PriorityPerson("Sam Mendes", False)
p3 = PriorityPerson("Grandmother Anne", True)
p4 = PriorityPerson("Stephen Hawking", True)
p5 = PriorityPerson("Betty Large", True)

listaPessoas = [p1,p2,p3,p4, p5]
listaPessoas.sort()
for p in listaPessoas:
   print(p)

正确的输出:

Betty Large
Grandmother Anne
Stephen Hawking
John Smith
Sam Mendes

我的错误输出:

Betty Large
Stephen Hawking
Grandmother Anne
Sam Mendes
John Smith

任何帮助将不胜感激。 谢谢 。