我有这个分配,其中我必须定义具有属性name
,surname
和age
的名为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