__lt__并打印操作员超载



我有这个分配,其中我必须定义具有属性namesurnameage的名为Person的类。我已经完成了Getter和Setter方法;现在,我有一个超载操作员的问题。首先,我需要超载打印操作员(我已经完成了);其次,我需要超载"小于"运算符",这给我带来以下错误:

TypeError: '<' not supported between instances of 'Person' and 'Person'

在最后一步中,我需要比较不同人的年龄,例如:

Sabine=Person("Sabine","Musterfrau",17)
Anton_Junior=Person("Anton","Mueller",14)
print(Sabine < Anton_Junior) should return false and vice versa

我的问题是:1。类型错误和2.我已经超载打印方法,他们希望我以后使用默认的print()

这是我的代码:

from sys import stdout
class Person:
    def __init__(self,vorname,nachname,alter):
        self.vorname=vorname
        self.nachname=nachname
        self._alter=alter
    def get_Alter(self):
            return self._alter
    def set_Alter(self,alter2):
        self._alter=alter2
    def print(person):
        stdout.write("Name:"+person.vorname+" Nachname:"+person.nachname+" Alter:"+str(person._alter)+"n")
    def __lt__(self,other):
        return self._alter() < other._alter()
Sabine=Person("Sabine","Musterfrau",17)
Sabine.set_Alter(18)
Anton_Junior=Person("Anton","Mueller",14)
Anton_Senior=Person("Anton","Mueller",80)
print(Sabine < Anton_Junior)
print(Sabine)

好吧,刚完成我的任务,谢谢大家!

首先, self._alter是一个字段/属性/值(无论您想要什么名称),而不是方法。这应该为您提供帮助:

def __lt__(self,other):
        return self._alter < other._alter

关于第二个问题::

我已经超载打印方法,他们希望我以后使用默认打印()。

重新定义__str__()方法。

>>> class MyClass:
...   def __str__(self):
...     return 'This is my class'
... 
>>> mc = MyClass()
>>> print(mc)
This is my class

最新更新