name
,surname
およびage
の属性を持つPerson
という名前のクラスを定義する必要があるこの割り当てがあります。私はゲッターとセッターメソッドを行った。今私は演算子のオーバーロードに問題があります。 まず、印刷演算子をオーバーロードする必要があります(これは私が行っています)。__lt__と印刷オペレータのオーバーロード
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)
[OK]を、終了したばかりの私の仕事、あなたのすべてに感謝!
このコードは、あなたが主張しているエラーを意味するものではありません。これはTypeErrorを返しますが、何らかの理由であなたの '__lt__'メソッド内で' _alter'オブジェクトを呼び出すため、メッセージ '' int ''オブジェクトは呼び出し可能ではありません。 –
PythonはJavaではありません。簡単な属性アクセスのためにgetterとsetterは使用しません。 Pythonでgettersとsetterが本当に必要な場合は、[descriptor protocol](https://docs.python.org/3/howto/descriptor.html)を使用して、呼び出し元が単純な属性を使用してgetterおよびsetterメソッドにアクセスできるようにします構文。 –
あなたの助けを借りて今すぐ修正しました。 –