さらに良い self._birthDay = ['{:02d}'.format(x) for x in birthDay]
、しかし、datetime.datetime
オブジェクトとしてbirthDay
を表現することです。それは常に3つのint型、月、日、年として来てと仮定すると、あなたは何だろう:
は bmon, bday, byear = birthDay
self._birthDay = datetime.datetime(byear, bmon, bday)
次に、あなたの__repr__
はdatetime.strftime
方法を利用することができます。
編集
あなたの更新に応じて、私はあなたが、使用をgetData
の上部にfrom datetime import datetime
を追加し、その後、代わりに月/日/年を解析する必要があると思う:
birthDay = datetime.strptime(x[3], '%m/%d/%Y')
これにより、本物のdatetime
オブジェクトが誕生日を表すようになります(時間が必要ないので、datetime.date
オブジェクトを使用することもできます)。
その後、あなたとあなたの__repr__
メソッドを置き換えることができます。
def __repr__(self):
fmtstr = '{first} {last} (#{techid})\nAge: {age} ({bday})\nGPA: {gpa:0.2f} ({credits})'
bday = self._birthDay.strftime('%m/%d/%Y')
return fmtstr.format(first=self._first,
last=self._last,
age=self.currentAge(),
bday=bday,
gpa=self.currentGPA(),
credits=self._totalCredits)
ああ、_birthDay
は今datetime.datetime
ているので、あなたはあまりにも複雑されることなく合理的に正確になりますint((datetime.datetime.now() - self._birthDay)/datetime.timedelta(days=365))
を返すようにcurrentAge()
を更新する必要があります。
'self._birthDay'は文字列ですか?いつこのエラーが発生していますか? –
いくつかのキャッシュや何かを更新する以外に、 '__repr__'メソッドでオブジェクトを変更しないでください。 – Paul
私はメインファイルとデータファイルを更新して追加しました。 –