__lt__并打印运算符重载

时间:2017-12-12 11:08:06

标签: python

我有这个作业,我必须在其中定义一个名为Person的类,其属性为namesurnameage。我做了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方法,他们希望我以后使用默认的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)

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

1 个答案:

答案 0 :(得分:2)

首先,TextWatcher是一个字段/属性/值(无论你想要什么名称)而不是方法。这应该可以帮到你:

self._alter

说到第二个问题::

  

我已经重载了print方法,他们希望我稍后使用默认的print()。

重新定义def __lt__(self,other): return self._alter < other._alter 方法。

__str__()