我有这个作业,我必须在其中定义一个名为Person
的类,其属性为name
,surname
和age
。我做了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)
好的,刚完成我的任务,谢谢大家!!!
答案 0 :(得分:2)
首先,TextWatcher
是一个字段/属性/值(无论你想要什么名称)而不是方法。这应该可以帮到你:
self._alter
说到第二个问题::
我已经重载了print方法,他们希望我稍后使用默认的print()。
重新定义def __lt__(self,other):
return self._alter < other._alter
方法。
__str__()