Python __lt______和打印操作员过载

Python __lt______和打印操作员过载,python,Python,我有一个任务,我必须定义一个名为Person的类,该类具有name、姓氏和年龄。我做过getter和setter方法;现在我遇到了重载运算符的问题。 首先,我需要重载一个打印操作符(我已经这样做了);其次,我需要重载“小于”运算符,这会导致以下错误: TypeError: '<' not supported between instances of 'Person' and 'Person' 好的,刚刚完成我的任务,谢谢大家 首先,self.\u alter是一个字段/属性/值(可以随意

我有一个任务,我必须定义一个名为
Person
的类,该类具有
name
姓氏
年龄
。我做过getter和setter方法;现在我遇到了重载运算符的问题。 首先,我需要重载一个打印操作符(我已经这样做了);其次,我需要重载“小于”运算符,这会导致以下错误:

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

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

首先,
self.\u alter
是一个字段/属性/值(可以随意命名),而不是方法。这将有助于您:

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

此代码不提供您声明的错误。它确实给出了一个TypeError,但带有消息“int”object is not callable”,因为出于某种原因,您正在调用
\u lt\u
方法中的
\u alter
对象。Python不是Java。对于简单的属性访问,我们不使用getter和setter。如果您确实需要Python中的getter和setter,请使用,以便调用方仍然可以使用简单的属性语法访问getter和setter方法。在您的帮助下,现在修复了它,谢谢,但打印后我得到了意外的结果(Sabine)--->为您的类提供一个方法。
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)
def __lt__(self,other):
        return self._alter < other._alter
>>> class MyClass:
...   def __str__(self):
...     return 'This is my class'
... 
>>> mc = MyClass()
>>> print(mc)
This is my class