__打印操作员过载

2024-09-21 01:16:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在这个赋值中,我必须定义一个名为Person的类,其属性为namesurnameage。我已经完成了getter和setter方法;现在我遇到了重载操作符的问题。 首先,我需要重载一个print操作符(我已经这样做了);其次,我需要重载“less than”操作符,这会导致以下错误:

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)

好的,我刚完成任务,谢谢大家!!!你知道吗


Tags: 方法selfreturndefpersonprintantonalter
1条回答
网友
1楼 · 发布于 2024-09-21 01:16:40

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

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

说到第二个问题:

I have already overloaded print method and they want me to use the default print() later.

重新定义__str__()方法。你知道吗

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

相关问题 更多 >

    热门问题